题解 | #跳台阶扩展问题#
跳台阶扩展问题
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;
}

文远知行公司福利 603人发布