1011 数的计算 2001年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1. 不作任何处理; 2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入描述 Input Description 一个数n 输出描述 Output Description 满足条件的数的个数 样例输入 Sample Input 6 样例输出 Sample Output 6 数据范围及提示 Data Size & Hint 6个数分别是: 6 16 26 126 36 136 #include <iostream> using namespace std; int s=1; void search(int n) { int i; for(i=1;i<=n/2;i++) { s++; search(i); } } int main() { int n; cin>>n; search(n); cout<<s; return 0; } 利用递归,如果S不设置成全局变量,而是把它放在search函数里,定义成int s=1,需要把for循环的内容改成s+=search(i);否则是错误的。原因好好思考一下就能明白。