解题思路:本题解有两种解题思路,利用递推与递归的解决方法
主要公式:f(n) = f(n - 1) + f(n - 3)
注意事项:另外递归的方法对于本题时间要求是超时的,仅供参考学习
参考代码:
递推:
#include <iostream> using namespace std; int main(){ int n; int a[55] = {0,1, 2, 3 ,4}; for(int i = 5 ; i <= 55 ;i++){ a[i] = a[i - 1] + a[i - 3]; } while(cin >> n){ if(n == 0) return 0; cout << a[n] << endl; } return 0; }
递归:(超时)
#include <iostream> using namespace std; int dfs(int n){ if(n <= 4) return n; else if(n >= 5 && n <= 55) return dfs(n - 1 ) + dfs( n - 3); } int main(){ long long int x; while(scanf("%d\n" , &x)){ if (x == 0) break; printf("%d\n", dfs(x)); } return 0; }
0.0分
2 人评分
模拟计算器 (C语言代码)浏览:892 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1419 |
成绩转换 (C语言代码)浏览:1008 |
淘淘的名单 (C语言代码)答案错误???浏览:595 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1756 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:474 |
母牛的故事 (C语言代码)浏览:945 |
大家好,我是验题君浏览:577 |
1035 题解浏览:785 |
C语言训练-亲密数 (C语言描述,反正怎么都能对)浏览:2169 |