题目:
小乐乐上课需要走台阶,因为他腿比较长,所以每次可以选择走一阶或两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n(1 ≤ n ≤ 30)
输出描述:
输出一个整数,即小乐乐可以走的方法数
代码思路:
当 n =1 时,显然只有一种走法;n = 2 时,有1阶+1阶和直接2阶两种走法
当 n > 2 时,假设有10个台阶 (n为假设的台阶数)
那么第一步走了1阶,还剩9阶;走了2阶,还剩8阶
可以自定义一个函数fib(n),通过函数递归来解题,此时则
10 fib(10) ---计算走n个台阶的走法
第一种情况:1 余9 fib(9) | 第二种情况:2 余8 fib(8)
由此可见fib(10) = fib(9) + fib(8)
{ 1 n=1
fib(n) = { 2 n=2
{ fib(n-1) + fib(n-2) n>2
由上可知,青蛙跳台阶从结束到开始就是一个斐波那契数列
因此代码如下:
#include<stdio.h>
int fib(int n)
{
if(n<=2)
{
return n;
}
else
{
return fib(n-1) + fib(n-2);
}
}
int main()
{
int n=0;
scanf("%d",&n);
int m = fib(n);
printf("%d\n",m);
return 0;
}
更多函数递归内容:
1. 函数递归复习
2. 2的幂
3. 斐波那契数
4. 破冰游戏(约瑟夫环)