[one_demo_8]十进制转二进制
使用递归,需要了解递归的一个原则,也是函数调用的原则,等到调用的函数返回才会执行下一步。
如果在递归的代码处之后还有代码,这个递归后面的代码需要等到递归执行后才执行,而且这处代码中的变量在每次递归中的内存地址是不一样的,所以,即便是递归看起来好像是改变了这个变量的值,实际上在内存地址中这个变量对应的自己原本所在的函数中的值是不会因为递归中同名变量的值的变化而变化的,因为它的内存地址,在编译执行时就固定了。
为了看清楚这个变量的内存地址是不同的,所以打印了其内存地址。
void shizhuaner(int num)
{
if (num == 0)
{
return;
}
else
{
shizhuaner(num / 2);
printf("%d,%x\n", num% 2, &num);
}
}
void main()
{
int num;
scanf("%d", &num);
printf("输入的二进制为:\n");
shizhuaner(num);
system("pause");
}
执行的图示