mdsk.net
当前位置:首页 >> int F(int n){ iF(n==1)rEturn 1; ElsE rEturn (n*... >>

int F(int n){ iF(n==1)rEturn 1; ElsE rEturn (n*...

第一次进入:x==10,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+fun(10-1)即10+fun(9) 第二次进入:x==9,因为x!=1,执行else return(n+fun(n-1)); 语句,返回10+9+fun(9-1)即10+9+fun(8) ..... .... 第九次进入:x==2,因为x...

f(1)=1 f(2)=f(1)+1=2 i=1 j+=f(1)=1 j=1 i=2 j+=f(1)+1=2 j=3 循环结束。

这个函数是用来求阶乘的,用了递归方法。输入100,就会得到100的阶乘。但是由于数值太大,会导致溢出。建议将返回值类型改为 double 型。 计算N的阶乘需要进行N次乘法运算,因此时间复杂度为O(N)。

4!= 24; 递归:4*3*2*1=24;

f(20) = f(19) - f(18) = f(18)-f(17) - [f(17) - f(16)] = f(18) - 2f(17) + f(16) ……中间省略78个字……(反正就是往下展开) 还有你写错了额 f(20)是f(19)-f(18),不是f(19)-f(20)

对于函数fib,时间复杂度 t(n)=1+t(n-1),故为 Θ(n)。 对于函数cnm,你这里n>m,调用了fib(n),fib(m),fib(n-m),外加一次除法和一次乘法运算,故其时间复杂度为 o(n)。 阶乘的英文是factorial。

这是用递归做1+2+3+...+nreturn 1;不能直接改成return 0,这样会少加一个1,但可以这样:int sum (int n){if(n==0) return 0;else return n+sum(n-1);}

fac (5)=5*fac (4) fac (4)=4*fac (3) fac (3)=3*fac (2) fac (2)=2*fac (1) fac (1)=1 依次代入,可得 fac (5)=5*4*3*2*1=120

aa:(1,2,3) s=f(&1,3); 在计算时:3>1 返回 1+f(&2,2) f(&2, 2):2还是大于1,就返回2+f(&3,1); f(&3,1):1不大于1了,所以就返回a[0],也就是3. f(&3,1)=3,那么f(&2,2)=2+3=5,f(&1, 3)=1+f(&2,2)=1+5=6 上面我写的&1,&2,&3语法是不对的,只...

zison8835

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com