问题:
输入正整数n,在输入n个数,计算并输出这n个数之和。必须使用递归,不能出现循环。例如输入3 2 2 2,输出6
思路:
- 输入个正整数n——scanf(“%d”,&n);
- 在输入n个数——k=n(这里k是递归次数,每一次递归得出一次n的值)
- 递归——递归相当于循环,由于在输入n个数,k=n,所以递归时只需每次传k的次数即可。
- 由于每次递归都是独立的个体,因此定一个变量n,表示本次输入的数,此个体中的n就位本次输入的值,之后找递归结束条件,当k<1时,返回n(为最后一次递归所输入的值),否则返回return n+sum(k);
- 设计完递归以后,可画草图,进行手动模拟,如果没毛病,就对了。草图如下:
相信看完草图,就大致清楚上面说的一堆话什么意思了。此外,本次收获还有如果递归不确定对不对,一定要画草图,手动走一遍。
代码如下:
#include <stdio.h>
int sum(int k,int num)
{
num++;
printf("第%d次k=%d\n",num,k);
int n;
scanf("%d",&n);
k--;
if(k<1)
return n;
else
return n+sum(k,num);
}
int main()
{
int n;
scanf("%d",&n);
int k;
k=n;
int zhi;
zhi=sum(k,0);
printf("sum=%d",zhi);
}