题解 | #跳台阶扩展问题#

跳台阶扩展问题

https://www.nowcoder.com/practice/953b74ca5c4d44bb91f39ac4ddea0fee

#include <stdio.h>
/*
首先确定范围1~20,赋初值否f(1) = 1,f(2) = 2
其次需要确定f(n),因为是每一级都可以跳上来,所以f(n) = f(n - 1) + f (n - 2) + ... + f(1) + 1;
例如:f(3) = f (2) + f(1) + 1,加1是直接一步跳上来,这个很容易漏或者想错了。
*/
int jump(int n)
{
    int sum = 1;
    if(n < 1 || n > 20)
        return -1;

    if (n == 1 || n == 2)
        return n;

    for(int i = 1;i < n;i++)
    {
        sum += jump(i);
    }
    return sum;
}

int main() {
    int a;
    while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        printf("%d\n", jump(a));
    }
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务