有一只青蛙要跳上n阶台阶,它可以选择一次跳一节台阶或两节台阶,
问一共有多少种跳法
设跳n节有fib(n)种
假设青蛙要跳上10节的台阶,那么它每次跳都有两种选择:
1.跳一节然后跳剩下的9节
2.跳2节然后跳剩下的8节
于是fib(10)=fib(9)+fib(8)
进而可以广泛推出:当n>=3时,fib(n) = fib(n-1) + fib(n-2)
当n=2,fib(2)=2,
当n=1,fib(1)=1,
于是可以用递归的方法解决
#include <stdio.h>
int fib(int n)
{
if (n>=3)
return fib(n-1) + fib(n-2);
else
return n;
}
int main()
{
int n = 0;
printf("请输入台阶数:");
scanf("%d",&n);
int net = fib(n);
printf("有%d种方法\n",net);
return 0;
}