【发布时间】:2017-11-28 18:45:52
【问题描述】:
所以,首先我是 C 的初学者,我们正在大学学习它的“结构化编程”课程。
现在,作为初学者的我,最近几节关于“递归函数”的讲座让我感到很痛苦。谁能给我解释一下:
所以我有这个小脚本,一个递归函数,它接受一个十进制数并将其转换为二进制数:
#include <stdio.h>
void binary(int num)
{
if (num == 0) return;
binary(num / 2);
printf("%d", num % 2);
}
int main()
{
int n;
scanf("%d", &n);
binary(n);
return 0;
}
现在我想知道,这个功能是如何工作的?我知道它背后的逻辑以及它应该做什么,但我不知道它是如何做到的。底部的 printf 尤其让我失望,例如,如果 printf 函数在递归调用之前,对于输入的十进制 10,它会打印出(0101),但如果它在它下面,它会打印出正确的二进制数(1010)?
非常感谢任何形式的帮助,亲切的问候。
【问题讨论】:
-
用铅笔和一张纸“用手”天真地“执行”你的程序,你就会明白了。
-
请注意,当
n为零时,该函数不会打印任何内容。