永发信息网

c语言用递归法求Y=x+x²/2!+x³/3!+……到第n项,n和x的值由键盘输入

答案:3  悬赏:70  手机版
解决时间 2021-04-07 13:40
c语言用递归法求Y=x+x²/2!+x³/3!+……到第n项,n和x的值由键盘输入
最佳答案
这是一个动态规划的题,首先,f(n)代表求1到第n项的和,那么递推公式为:
f(n) = f(n-1) + x的n次方/n的阶乘;
简化 = f(n-1) + (f(n-1) - f(n-2))*x/n;

故有以下代码(动态规划的递归解法):
//由于这中间涉及除法,我选用了double,楼主视情况修改吧

double f[SIZE] = {0};
double getY(double x, double n)
{
if(n == 1)return x;
if(n == 2)return x*x/2 + x;
if(f[n] != -1)return f[n];

f[n] = (1+x/n)*getY(x, n-1) - (x/n)*getY(x, n-2);
return f[n];
}
全部回答
下面是公式,如果这样还不会写,说明笨到家了,呵呵。
f(n) = f(n-1) * n n>0; n==0 f(0)=1
g(n) = g(n-1) + x^n/f(n)
#include "stdafx.h"
int n=0;
long x=0;
double sum=0;
double result=0;
double i=0;
double process(int nnn,long xxx)
{
double k=1;
double multi_sum=xxx;
if(nnn>0)
{
for(i=1;i<=nnn;i++)
{
k=k*i;
}
if(nnn==1)
{
multi_sum=xxx;
}
else
{
for(i=2;i<=nnn;i++)
{
multi_sum=multi_sum*xxx;
}
}
sum=sum+(multi_sum)/k;
process(nnn-1,xxx);
}
else
{
return sum;
}

}
int main(int argc, char* argv[])
{
printf("请输入X的值:\n");
scanf("%d",&x);
printf("请输入n的值:\n");
scanf("%ld",&n);
process(n,x);//result=process(n,x);会显示乱码,我也不知道为什么所以直接用SUM做全局变量,然后赋值
result=sum;
printf("结果:%lf\n",result);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
铁字旁加生念什么
白色连帽卫衣怎么搭配外套?短款
请问高压电工进网证好考吗???
汽车机油量尺怎么看机油量多少?
我是山东理科考生, 535分能上什么大学?最好
木目心人尔好好的什么意思?
镜子反光照玻璃可以照死人吗
“421”家庭模式,是什么意思?
房贷逾期三次,还可以用房产证做二次贷款吗
唐房站怎么去啊,有知道地址的么
为什么荷甲比英超的欧联名额还多一个
上技校需要带学习用品例如笔和本
中日战争
大家以后别用中通 什么玩意
富利金店地址有知道的么?有点事想过去
推荐资讯
为什么卤鸭胗凉了后会发硬
感觉自己做事墨迹
地风升卦变山风蛊测财运
东南2015款尾灯价格
我叫胡镱东,爸叫胡鸿斌爷爷叫胡学光我是什么
学计算机的同学现在工资都过万了,我学了机械
而孙权委心听之的翻译委是什么意思
校区除了宿舍差点,其余什么都好
本人有屋,已登记历史违留建筑申报为本人名,
信用卡因没接到短信逾期怎么申诉
小乌龟能剪指甲吗?
创建平安校园宣传标语,文明校园口号
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?