问题描述

一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。

分析

n - 台阶数

sum - 跳发

n sum
1 1
2 2
3 3
4 5
5 8
6 13
7 21
8 34
9 55
10 89
…… ……
n-2 f(n-2)
n-1 f(n-1)
n f(n-1)+f(n-2)

可参考斐波那数

递归实现

//1 2 3 5 8 13 21 34 55 89 ……
//递归实现
int D_Frog_jump(int n)
{

    if (n <3)
        return n;
    else
        return D_Frog_jump(n - 1) + D_Frog_jump(n - 2);
}
int main()
{
    int n = 0;
    int ret = 0;
    printf("请输入青蛙要跳的台阶数:");
    scanf("%d", &n);
    ret = D_Frog_jump(n);
    //ret = FD_Frog_jump(n);
    printf("%d\n", ret);
    return 0;
}

非递归实现

//非递归实现
int FD_Frog_jump(int n)
{
    int res = 2;
    int pre_res = 1;
    int next_older_res = 0;
    while (n > 2)
    {
        next_older_res = pre_res;
        pre_res = res;
        res = pre_res + next_older_res;
        n--;
    }
    return res;
}
上一页
下一页