在主程序中提示输入整数n,编写函数用递归的方法求1+2+3+、、、+n的值

 我来答
娱乐小八卦啊a
高粉答主

2020-05-20 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:260 获赞数:117934

向TA提问 私信TA
展开全部

代码如下:

#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)递归实例,包括一个或多个问题最小部分的递归调用

keyiwenwo
2009-12-26 · TA获得超过8871个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:1118万
展开全部
#include <stdio.h>

/*递归计算*/
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cm麦兜
2009-12-25 · TA获得超过3782个赞
知道小有建树答主
回答量:1609
采纳率:0%
帮助的人:1204万
展开全部
#include<iostream>
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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨露滋李苑花T
2009-12-25 · TA获得超过127个赞
知道答主
回答量:221
采纳率:0%
帮助的人:175万
展开全部
#include <stdio.h>

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语言,递归
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友86bca6e04
2009-12-25 · TA获得超过202个赞
知道答主
回答量:106
采纳率:0%
帮助的人:97.9万
展开全部
main()
{
int n,i;
int s=1;
scanf("input a number n:",&n);
for(i=1;i<=n;i++)
s=s+i;
printf("\n",s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式