中易网

c语言 用递归调用求函数

答案:3  悬赏:30  
解决时间 2021-03-02 20:59
各位大侠 这是我编的 不过不行 结果老是1.000000 请各位大侠指教问题在哪 我新手 见笑了
#include<stdio.h>
int add (int x,int n)
{int N=1,p=-1,q=1,i,j,k;
double m=1.0;
for(k=1;k<=(2*n-1);k++)
N=N*k;
for(i=1;i<=(2*n-1);i++)
p=p*(-1);
for(j=1;j<=(2*n-1);j++)
q=q*x;
if(n>1)
m=(double)(p*q)/(double)(N)+add(x,n-1);
else
return m;}

main()
{int t,r;
double y;
scanf("%d%d",&t,&r);
y=add (t,r);
printf("%lf\n",y);}
小弟在此谢过



最佳答案
#include<stdio.h>
double add (double x,double n)//int 改为double
{int N=1,p=-1,q=1,i,j,k;
double m=1.0;
for(k=1;k<=(2*n-1);k++)
N=N*k;
for(i=1;i<(2*n-1);i++) //好像多算了一次,我减了一次
p=p*(-1);
for(j=1;j<=(2*n-1);j++)
q=q*x;
if(n>1)
return m=(double)(p*q)/(double)(N)+add(x,n-1);加了个return
else
return m;}

main()
{
int t,r;
double y;
scanf("%d%d",&t,&r);
y=add (t,r);
printf("%lf\n",y);
system("pause");
}
全部回答
我不知道你给的题目中的L是什么。不过你可以看一下: #include<stdio.h> double add (int x,int n) {int N=1,p=-1,q=1,i,j,k; for(k=1;k<=(2*n-1);k++) N=N*k; if(n%2!=0) p=1; for(j=1;j<=(2*n-1);j++) q=q*x; if(n>1) return ((double)(p*q)/(double)(N)+add(x,n-1)); else return (double)x;} 主函数不需要改。

递归调用,即:自己调自己。

递归调用,系统将自动把函数中当前的变量和形参暂时保留起来,在新一轮的调用过程中,系统为新调用的函数所用到的变量和形参开辟另外的存储单元(内存空间)。每次调用函数所使用的变量在不同的内存空间。

例:使用递归的方法求n!

  当n>1时,求n!的问题可以转化为n*(n-1)!的新问题。

  比如n=5:

      第一部分:5*4*3*2*1 n*(n-1)!

      第二部分:4*3*2*1 (n-1)*(n-2)!

      第三部分:3*2*1 (n-2)(n-3)!

      第四部分:2*1 (n-3)(n-4)!

      第五部分:1 (n-5)! 5-5=0,得到值1,结束递归。

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
公司运来a车化肥,每车装4吨,计划平均分6次
祥华商店在什么地方啊,我要过去处理事情
柜机2.5匹和大2匹的区别
求一份用英语写的电影蚁人的影评
谁能帮用手机发个信息解绑微信号!
兴善僧庭一大丛的意思是什么
中国邮政(孝感市邮政局闵集乡支局)地址有知道
顺发商行地址在哪,我要去那里办事
挖一个长、宽、高分别是8m、6m、2m的长方体水
海旅百事通国际旅行社(团城山门市部)地址在什
街头镇地址有知道的么?有点事想过去
日语里有多少个假名呢?就是除了汉字以外的字
二轻五金家电物资供应公司地址有知道的么?有
跟我父亲分户现在能合户吗
古代状元有多牛
推荐资讯
《can't stop love》这首歌背后的故事
株洲市测绘局地址在什么地方,想过去办事
剖腹产指征都有那些?
连云港市城建房地产开发有限公司在哪里啊,我
湖南大学建筑结构实验室怎么去啊,有知道地址
求骂人绕口令
头疼鼻噻鼻炎犯了输液好吗
致青春音乐茶座地址在什么地方,想过去办事
突然得了股癣,有点弄不清我这么爱干净的人怎
江阴市元明机电设备制造有限公司怎么去啊,有
我喜欢班级的25个理由
我的塔松多肉 侧枝露天长根是怎么回事 红粉色
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?