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

c\u8bed\u8a00\u7528\u9012\u5f52\u6cd5\u6c42y=x+x2/2!+x3/3!\u2026\u5230\u7b2cn\u9879,n\u548cx\u7684\u503c\u7531\u952e\u76d8\u8f93\u5165

#include#includefloat fun(int,float,float *ans);int main(){ int n; float x,sum=0; float *ans; printf("\u8bf7\u8f93\u5165N\uff1a\n"); scanf("%d",&n); printf("\u8bf7\u8f93\u5165X(float)\uff1a\n"); scanf("%f",&x); ans=(float *)malloc((n+1)*sizeof(float)); fun(n,x,ans); for(int i=1;i!=(n+1);i++) { sum+=*(ans+i); } printf("\u6c42\u5f97\u548c\u4e3a\uff1a%f\n",sum); free(ans);}/**\u8be5\u51fd\u6570\u5c06\u6c42\u548c\u591a\u9879\u5f0f\u62c6\u5f00\uff0c\u89c2\u5bdf\u6bcf\u4e00\u9879\uff0c\u53d1\u73b0\u7b2c\uff08n+1\uff09\u9879\u7b49\u4e8e*\u7b2cn\u9879\u4e58\u4ee5\uff08x/(n+1)\uff09,\u56e0\u6b64\u53ef\u9012\u5f52\u6c42\u5f97\u6c42\u548c\u591a\u9879\u5f0f \u4e2d\u7684\u6bcf\u9879\u7684\u503c\uff0c\u7136\u540e*\u6839\u636e\u8f93\u5165N\u7684\u503c\u5f00\u8f9fN+1\u6570\u7ec4\uff0c\u6570\u7ec4\u7528\u4e8e\u5b58\u653e\u5728\u9012\u5f52\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u524d\u9762\u9879\u7684\u503c\uff0c\u8fd9\u6837*\u901a\u8fc7\u4e00\u6b21\u9012\u5f52\uff0c\u4fbf\u6c42\u5f97\u6240\u6709\u9879\u7684\u503c\uff0c\u7136\u540e\u6839\u636e\u6570\u7ec4\u4e2d\u7684\u503c\u8fdb\u884c\u6c42\u548c\u5373\u53ef\u3002*/ float fun(int n,float x,float *ans){ if(n==1) { *(ans+n)=x; return x; }else{ *(ans+n)=(x/(n))*fun(n-1,x,ans); return *(ans+n); }}

#include#includefloat fun(int,float,float *ans);int main(){ int n; float x,sum=0; float *ans; printf("\u8bf7\u8f93\u5165N\uff1a\n"); scanf("%d",&n); printf("\u8bf7\u8f93\u5165X(float)\uff1a\n"); scanf("%f",&x); ans=(float *)malloc((n+1)*sizeof(float)); fun(n,x,ans); for(int i=1;i!=(n+1);i++) { sum+=*(ans+i); } printf("\u6c42\u5f97\u548c\u4e3a\uff1a%f\n",sum); free(ans);}/**\u8be5\u51fd\u6570\u5c06\u6c42\u548c\u591a\u9879\u5f0f\u62c6\u5f00\uff0c\u89c2\u5bdf\u6bcf\u4e00\u9879\uff0c\u53d1\u73b0\u7b2c\uff08n+1\uff09\u9879\u7b49\u4e8e*\u7b2cn\u9879\u4e58\u4ee5\uff08x/(n+1)\uff09,\u56e0\u6b64\u53ef\u9012\u5f52\u6c42\u5f97\u6c42\u548c\u591a\u9879\u5f0f \u4e2d\u7684\u6bcf\u9879\u7684\u503c\uff0c\u7136\u540e*\u6839\u636e\u8f93\u5165N\u7684\u503c\u5f00\u8f9fN+1\u6570\u7ec4\uff0c\u6570\u7ec4\u7528\u4e8e\u5b58\u653e\u5728\u9012\u5f52\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u524d\u9762\u9879\u7684\u503c\uff0c\u8fd9\u6837*\u901a\u8fc7\u4e00\u6b21\u9012\u5f52\uff0c\u4fbf\u6c42\u5f97\u6240\u6709\u9879\u7684\u503c\uff0c\u7136\u540e\u6839\u636e\u6570\u7ec4\u4e2d\u7684\u503c\u8fdb\u884c\u6c42\u548c\u5373\u53ef\u3002*/ float fun(int n,float x,float *ans){ if(n==1) { *(ans+n)=x; return x; }else{ *(ans+n)=(x/(n))*fun(n-1,x,ans); return *(ans+n); }}

这是一个动态规划的题,首先,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];
}

#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;
}

下面是公式,如果这样还不会写,说明笨到家了,呵呵。

f(n) = f(n-1) * n n>0; n==0 f(0)=1
g(n) = g(n-1) + x^n/f(n)

  • c璇█ 閫掑綊姹闃朵箻
    绛旓細//杩欐牱灏卞彲浠ヤ簡//鏈夌枒闂杩庝氦娴#include<stdio.h>int fact(int n){if(n == 1)return 1;return n * fact(n-1);}int main(){int num;scanf("%d", &num);printf("%d\n", num);return 0;}
  • C璇█涓瓁+=y,x-=y鍒嗗埆琛ㄧず浠涔堟剰鎬
    绛旓細x+=y 灏辨槸x=x+y鐨勭畝鍐欍倄-=y 灏辨槸x=x-y鐨勭畝鍐 1銆+=; -= 鏄鍚堢殑璧嬪艰繍绠楃銆2銆C璇█閲囩敤澶嶅悎杩愮畻绗 涓鏄畝鍖栫▼搴忋備簩鏄负浜嗘彁楂樼紪璇戞晥鐜囷紝鑳戒骇鐢熻川閲忚緝楂樼殑鐩爣浠g爜銆3銆佸欢浼哥煡璇嗙偣锛歺*=y 灏辨槸x=x*y鐨勭畝鍐欙紝渚濇绫绘帹銆
  • C璇█鐢ㄩ掑綊娉曟眰n闃跺嫆璁╁痉澶氶」寮忓墠10椤圭殑鍊
    绛旓細C璇█鐢ㄩ掑綊娉曟眰n闃跺嫆璁╁痉澶氶」寮忕殑鍊硷紝鍙互浣跨敤浠ヤ笅浠g爜锛歩nclude <stdio.h> // 瀹氫箟閫掑綊鍑芥暟 double P(int n, double x){ if (n == 0) // 閫掑綊鍑哄彛 return 1;else if (n == 1) // 閫掑綊鍑哄彛 return x;else // 閫掑綊鍏紡 return ((2 * n - 1) * x - P(n - 1, x) - ...
  • c璇█閫掑綊闂
    绛旓細鎴戜篃涓嶆槸璁$畻鏈轰笓涓氭瘯涓, 鏈変簺鏈涓嶄細.棣栧厛,鍒嗘瀽fun()鍑芥暟鐨勫畾涔, 濡備笅.鍙傛暟: n 鍜 *pt ;澹版槑涓や釜int, x , y;褰搉 =1 or n =2 鏃, 鏈缁堢粨鏋滅瓑浜1;鍚﹀垯:瀵筺鍋氬鐞,鍒嗗埆寮濮嬩袱涓閫掑綊, 鍗冲 n-1, 鍜宯 -2 閫掑綊, 鏈缁堢粨鏋滀负 涓や釜閫掑綊寰楃殑*pt涔嬪拰.鍓╀笅鐨勮繍浣滄祦绋嬩綘鐢ㄧ櫨搴i鑱旂郴鎴...
  • C璇█鍑芥暟鐨閫掑綊璋冪敤
    绛旓細鍏堣皟鐢ㄥ嚱鏁癴锛岀劧鍚庢妸杩斿洖鍊艰祴鍊肩粰z銆備笉杩囪繖涓嚱鏁颁笉瀵癸紝娌℃湁閫鍑烘潯浠讹紝鏃犳硶鍋滄銆備妇渚嬭鏄庡惂 int f(int x){ if(x==0){ return 1;} else { return x*f(x-1);} } 鍋囧f(3)閭d箞 绗竴娆锛3锛:x锛=0锛岃皟鐢╢(2)绗簩娆锛2锛:x锛=0锛岃皟鐢╢(1)绗笁娆锛1锛:x锛=0锛岃皟鐢╢(0...
  • C璇█闂-濡備綍璁╃▼搴忚繑鍥炲紑濮,鍐嶈繍琛.涓嶈嚜鍔ㄥ叧闂.
    绛旓細闂鎻忚堪:C璇█闂锛嶅浣曡绋嬪簭杩斿洖寮濮嬶紝鍐嶈繍琛岋紟涓嶈嚜鍔ㄥ叧闂紟浠ユ绋嬪簭涓轰緥锛歩nclude<stdio.h> include<math.h> double X=-1,Y=3;void main(){char a;double f1 (double x1,double x2);double f2 (double x1,double x2);printf("鍓茬嚎閫掑綊娉姹傛牴\n\n1.姹傛柟绋嬩竴鍦ㄥ尯闂碵-1,3]涓婄殑鏍.\...
  • c璇█ 鐢ㄩ掑綊璋冪敤姹傚嚱鏁
    绛旓細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);鍔犱簡涓猺eturn else return m;} main(){ int t,r;double y;scanf("%d%d",&t,&r);y=...
  • C璇█:鐢ㄩ掑綊瀹炵幇杈楄浆鐩搁櫎娉曞拰杈楄浆鐩稿噺娉曟眰鏈澶у叕绾︽暟鍜屾渶灏忓叕鍊嶆暟...
    绛旓細杩欐槸涓や釜绠楁硶鐨勪唬鐮侊紝涓诲嚱鏁癿ain()鑷繁鍐欙紝寰堢畝鍗 銆俰nt gcd(int x,int y) //杈楄浆鐩搁櫎娉曟眰鏈澶у叕绾︽暟 { int z;do {z=x%y;x=y;y=z;}while(z!=0);return x;} int gcd(int n,int m) { //杩欐槸閫掑綊 if (n%m==0)return m;else return gcd(m,n%m);} ...
  • C璇█杩唬涓閫掑綊姣旇緝(涓句緥)
    绛旓細鎴戜妇涓緥瀛愶細鈶犳枑娉㈤偅濂戞暟鍒楋細1锛1锛2锛3锛5锛8锛13锛21锛34...杩唬锛歩nt Fib[N];Fib[0]=1;Fib[1]=1;for(i=2;i<N;i++)Fib[i]=Fib[i-1]+Fib[i-2];} 閫掑綊锛歩nt Fib(int n){ if(n==0||n==1)return 1;else return (Fib(n-1)+Fib(n-2));} ...
  • c璇█閫掑綊娉曟眰x鐨刵娆
    绛旓細include <stdio.h> int power(int x, int p){ if (p == 0)return 1;else return (x * power(x, p-1);} int main(void){ int x, p;scanf("%d%d", &x, &p);printf("%d\n", power(x, p));}
  • 扩展阅读:c++编程 ... 用递归方法求n阶乘 ... 求解方程计算器手机版 ... c++数学题 ... c语言计算x的n次幂 ... c#知识点归纳 ... cos4x+sin4x ... (x+a)(x-b)公式 ... 递归的十个生活实例 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网