c语言函数递归的顺序 c语言递归函数的概念及用法

C语言函数递归调用,主函数与子函数顺序

在y!=0的情况下,fun会调用自己,要等y=0后,一层层往上。就到到fun(1)的时候再会执行printf("%d",d);putchar('\n');然后会执行fun(y*2+d)后面的,printf("%d",d);putchar('\n'),然后再往上,,,直到你最初的fun(n)后面的printf("%d",d);putchar('\n')。

巩留网站建设公司创新互联公司,巩留网站设计制作,有大型网站制作公司丰富经验。已为巩留上千提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的巩留做网站的公司定做!

你可以在printf("%d",d),后面加一个printf("n

=

%d\n",

n);

可以看到如下结果

8

n

=

1

1

n

=

2

n

=

4

n

=

8

C语言递归函数的执行顺序?代码如下

是第一个执行完再执行第二个

递归调用可以这样理解,就是想像有很多个函数的复制体,每次调用自己都是在调用一个复制体,一直到满足

if(start=end)

return;

然后再一层一层返回。

C语言递归函数执行的顺序

楼主的程序有两处错误,给你修正了一下:

局部两边x没有引用,给你删掉

main函数没有定义类型,加void

#include stdio.h

void fun(int n)

{

int d,y;//x给你删掉了

d=n%2;

y=n/2;

if(y!=0)

{

fun(y);

}

printf("%d",d);

//putchar('\n');这个没用我给你注释了

}

void main()

{

int n;

printf("enter a number\n");

scanf("%d",n);

if(n0)

printf("Input data error\n");

else

fun(n);

putchar('\n')//最后才调用这句代码

}

下面给你分析一下:

  fun()函数是一个递归函数,什么意思呢?意思就是它会调用本身,每次函数都会先执行代码d=n%2;y=n/2;然后在判断n是否大于0,如果n大于0,函数继续回调,如果n=0,函数就结束了回调,整个程序也就完成了。

  至于你说的执行完了这句还会不会执行后面的printf("%d",d);这是肯定的,因为要输出啊,给你看看运行结果


当前文章:c语言函数递归的顺序 c语言递归函数的概念及用法
文章分享:http://scyanting.com/article/doogscs.html