
在主程序中提示输入整数n,编写函数用递归的方法求1+2+3+、、、+n的值
代码如下:
#include<iostream>
using namespace std;
int D(int n,int &M)
{
M=M+n;
if(n>=1) D(n-1,M);
else return 0;
}
int main()
{
int n,M=0;
while(cin>>n)
{
D(n,M);
cout<<"从1加到"<<n<<"的和为:"<<M<<endl;
}
cout<<"input error!"<<endl;
}
扩展资料
递归函数的简单定义如下:
def recursion(): return recursion()
这只是一个简单的定义,什么也做不了。
当然,你可以尝试会发生什么结果,理论上会永远运行下去,但实际操作时发现不一会儿程序就报错了,因为每次调用函数都会用掉一点内存,在足够多的函数调用发生后,空间几乎被占满,程序就会报错。
RecursionError: maximum recursion depth exceeded
#超过最大递归深度
这类递归被称为无穷递归(infinite recursion),理论上永远都不会结束,当然,我们需要能实际做事情的函数,有用的递归函数应该满足如下条件:
(1)当函数直接返回值时有基本实例(最小可能性问题)
(2)递归实例,包括一个或多个问题最小部分的递归调用
/*递归计算*/
long jisuan( int n )
{
if(n=1)
return 1; /*参数1为递归出口*/
else
return( n + jisuan(n-1) );
}
int main()
{
int n;
long sum;
printf( "enter n: " );
scanf( "%d", &n );
sum=jisuan(n);
printf( "result: %ld", sum);
}
using namespace std;
int n,s;
void work(int i)
{if(i<=n){s+=i;work(i+1);}
}
int main()
{
cin>>n;
work(1);
cout<<s;
return 0;
}
long addFun( int n ) {
return( n + addFun(n-1) );
}
int main() {
int n;
printf( "enter n: " );
scanf( "%d", &n );
printf( "result: %ld", addFun(n) );
}
C语言,递归
{
int n,i;
int s=1;
scanf("input a number n:",&n);
for(i=1;i<=n;i++)
s=s+i;
printf("\n",s);
}