解题思路:由题意,列表:
n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
sum | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 5 |
可列递推公式:
sum(n) = 1+sum(n-1);
注意事项:
这里得到的递推公式和其它方法(取整求余)相比,正确性似乎没法确切保证,但是计算结果不会出错,而且递推式简单了好多哇,我还没想明白这是哪来的规律,求聪明的脑袋们指正。
参考代码:
#include<fstream>
#include<iostream>
using namespace std;
int count(int n) {
int ans = 0;
if (n <= 1)
return 0;
if (n == 2 || n == 3)
return 1;
else
ans += 1 + count(n - 2);
return ans;
}
int main() {
int a[10], i = 0, j = 0;
while(1){
cin >> a[i++];
if (a[i-1]==0 || i == 10)
break;
}
while (a[j] != 0 && j< 10) {
cout << count(a[j++]) << endl;
}
return 0;
}
0.0分
0 人评分
汽水瓶 (C语言代码)浏览:610 |
【出圈】 (C语言代码)浏览:558 |
ASCII帮了大忙浏览:749 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:512 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1433 |
Hello, world! (C++代码)浏览:1744 |
打印十字图 (C语言代码)浏览:2710 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:528 |
数字游戏 (C++代码)浏览:1185 |
简单的a+b (C语言代码)浏览:416 |