更新时间:2023-11-23 19:56:24
大家好,我是小环,我来为大家解答以上问题。递归函数c语言例题解析,递归函数c语言很多人还不知道,现在让我们一起来看看吧!
1、这位朋友,你的程序本身就是错误的。
2、 第一,sub(&s,8,1)这里,没有s这个变量,何来地址,应该是sub(&x,8,1) 第二,sub(int *a,int n,int k,)这里多了一个逗号,参数列表不支持这种格式。
3、 第三,printf("%d ")这里没有输出项,应该是printf("%d ",x) 应该是这样的 main() { int x=0; sub(&x,8,1); printf("%d ",x); } sub(int *a,int n,int k) { if(k<=n) sub(a,n/2,2*k); *a+=k; } 然后这个程序的目的是计算到k>n为止,中间k的所有取值累加在一起。
4、 第一次执行的时候n=8,k=1,不符合条件 第二次执行的时候n=n/2=4,k=2*k=2,不符合条件 第三次执行的时候n=n/2/2=2,k=2*2*k=4,符合条件,a=a+k=0+4=4,返回上次调用sub()的地方,a=a+k=4+2(这里的2是第二次执行的时候k的取值),一次类推,最后a的取值是a=4+2+1=7。
5、 因为传入sub()的a是指针,指向的是x的地址,所以最后a的改变反映在x上。
本文到此讲解完毕了,希望对大家有帮助。