当前位置: 代码迷 >> C语言 >> 我算出来是4,可答案是7
  详细解决方案

我算出来是4,可答案是7

热度:67   发布时间:2008-03-16 15:09:03.0
我算出来是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:
}
搜索更多相关的解决方案: int  sub  main  include  

----------------解决方案--------------------------------------------------------
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;
----------------解决方案--------------------------------------------------------
原来是这样
我就算了最后一次调用函数时的值。谢谢了!
----------------解决方案--------------------------------------------------------
  相关解决方案