今天做题遇到了这样一道题:

要用递归但是函数没有返回值。

想用除二取余法,但是最后要把余数逆序,又不能使用返回值,一开始不知道怎么处理。

解决方法:

利用函数调用的特点:遇到函数时,主函数暂停,先执行当前被调用的函数,完了之后再继续主函数。也就是调用栈的“后进先出”特点。

使用了flag 是因为让这个函数能输出0的二进制数。

flag 设成静态变量或者全局变量效果都是一样的。我设成了静态变量。

#include

void dectobin(int n)

{

static int flag=0;//flag用于判断参数n==0时,n是用户输入时就为0,还是经过递归之后成为0

if(n==0 && flag==0) //用户天然输入n为零

{

printf("%d",0);

return ;//return 有结束函数调用的作用

}

else if(n==0 && flag==1)

{

return ;

}

else

{

flag =1;

dectobin(n/2);

printf("%d",n%2);

}

}

int main()

{

int n;

scanf("%d",&n);

dectobin(n);

return 0;

}

Copyright © 2088 欧洲世界杯预选赛_赛程世界杯 - tvzfj.com All Rights Reserved.
友情链接