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