想必看过《少年班》的观众们都对这一幕记忆犹新把,老师来到农村,找到王大法,问了个问题,一共二十层台阶,一次只能跳一阶,或者两阶,一共有多少种跳法,王大法拿着龟壳,摇了几下,看着地上的铜钱,便得出了答案。
这里其实是经典的递归问题。
如果只有一个台阶,那么一共只有一种跳法,如果有两个台阶,那么就有两种跳法(分两次跳,或者一次),那么不妨写一个函数计算跳法。
int tiao(int n)
{
设一共有n节台阶
第一次跳一个,那么还剩n-1个,因为函数计算的是跳的次数,剩下台阶的跳法就还有tiao(n-1)次。
第一次跳两个,那么就还剩n-2个,剩下的跳法还有tiao(n-2)次;
那么所有的跳法就是,这两种跳法相加起来,下面是代码实现。
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int tiao(int n)
{
if (n == 1)
return 1;
if (n == 2)
return 2;
return tiao(n - 1) + tiao(n - 2);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", tiao(n));
}