题目描述 Description
给定n(n>=1),用递归的方法计算1+2+3+4+...+(n-1)+n
输入输出格式 Input/output
输入格式: 一行,一个数n 输出格式:
一行,结果
输入输出样例 Sample input/output
样例测试点#1
输入样例:
3
输出样例:
6
思路:
运行程序,当T=5时,输出结果:S=15,其递归调用执行过程是:(设T=3)
递归调用过程,实质上是不断调用过程或函数的过程,由于递归调用一次,所有子程序的变量(局部变量、变参等)、地址在计算机内部都有用特殊的管理方法——栈(先进后出)来管理,一旦递归调用结束,计算机便开始根据栈中存储的地址返回各子程序变量的值,并进行相应操作。
代码①如下(符合题意,用的是递归):
1 #include2 int fac(int n) 3 { 4 if(n==0) return 0; 5 else 6 { 7 return(fac(n-1)+n);//递归 8 } 9 }10 int main()11 {12 int n;13 scanf("%d",&n);14 printf("%d\n",fac(n));//调用函数 15 return 0;16 }
代码②如下(自己写的,没用递归,直接利用等差数列公式):
1 #include2 int main()3 {4 int n;5 scanf("%d",&n);6 printf("%d\n",((1+n)*n)/2);7 return 0;8 }