递归问题
关于递归求二进制的一点小问题
看下面的代码,虽然只是多了一个等号,但是结果却不一样,要深刻理解。
void to(int num)
{
printf("num: %d\n ", num);
if (num == 0 )
{
return;
}
else
{// 1: num /2 与 num /= 2 有什么区别?
//to(m /= 2);//这儿是把 m/=2 的值当做参数传递给形参,而且改变了m的值在程序中。
to(num / 2); //这儿是把 m/2 的值当做参数传递给形参。
//如果是先把印,后调用这两种写法都没问题,而如果是先调用,后打印这样打印中使用的 m 值就不同了
//一个是 m ,一个是 m = m/2 (m 除以 2 )后的值,所以先调用后打印有区别。
printf("%3d", num % 2); //这个放在 调用前后,如果是 to(m/=2)时,观察区别。
}
}
main.c
void main1()
{
to(10);
system("pause");
}
还没有评论,来说两句吧...