用递归的方式解决青蛙跳台阶问题

青蛙跳台阶问题是一个经典的编程问题,通过递归算法解决。当台阶数为n时,跳法数等于n-1阶的跳法加上n-2阶的跳法。递归函数的关键在于基线条件(1阶和2阶的情况)和递归步骤(n阶的跳法是n-1阶和n-2阶跳法的和)。
摘要由CSDN通过智能技术生成

青蛙跳台阶问题就是有n个台阶,小青蛙一次只能跳1个台阶或两个台阶,问它要跳到台阶最上方,有多少跳法,要用递归的方法解决这个问题,首先要清楚它可以用递归的点在哪里。

先从1阶台阶思考,显然只有1种跳法,而2阶台阶则有2种跳法。从3阶台阶开始就是解决问题的关键了,三阶台阶无法一次跳完,那么第一次必然跳1阶或者2阶。如果第一次跳1阶,剩下的跳法就变成了跳2阶的跳法;第一次跳两阶,剩下就是跳1阶的跳法。以此类推跳n阶就是第n-1次的跳法加n-2次的跳法,这就是我们可以使用递归的关键点了,我们可以写出函数:

int Jump(int n)
{
    if (n == 1)
        return 1;
    else if (n == 2)
        return 2;
    else if(n>2)
        return Jump(n - 1) + Jump(n - 2);
}


int main()
{
    int n = 0;
    printf("总共有几阶台阶?");
    scanf("%d", &n);
    printf("总共有%d种跳法", Jump(n));
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值