我算出来是4,可答案是7
求下面程序输出的结果#include <stdio.h>
main()
{ int x=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k)
{if(k<=n)sub(a,n/2,2*k);
*a+=k:
}
----------------解决方案--------------------------------------------------------
4+2+1==7
----------------解决方案--------------------------------------------------------
典型的递归算法.
#include <stdio.h>
main()
{ int x=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k)
{
if(k<=n)sub(a,n/2,2*k);
*a+=k: /*上一条结束之后把函数k值 连加三次 调用三次函数*/
}
----------------解决方案--------------------------------------------------------
恩..lz可以把流程图画出来啊..呵呵
----------------解决方案--------------------------------------------------------
回复 1# 的帖子
call sub(&x,8, k=1)call sub(&x,4, k=2)
call sub(&x,2, k=4)
x=x+4; //回归
return;
x=x+2;
return;
x=x+1;
return;
------------------------------------------------
so, x=0+4+2+1=7;
----------------解决方案--------------------------------------------------------
原来是这样
我就算了最后一次调用函数时的值。谢谢了! ----------------解决方案--------------------------------------------------------