#include<stdio.h>
void to_binary(unsigned long n);
int main(void)
{
unsigned long number;
printf("Enter an integer (q to quit):\n");
while (scanf("%lu", &number) == 1)
{
printf("Binary equivalent: ");
to_binary(number);
putchar('\n');
printf("Enter an integer (q to quit):\n");
}
printf("Done.\n");
return 0;
}
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2);
putchar(r == 0 ? '0' : '1');
return;
}
这个程序我是真看不懂,为什么自定义的函数void to_binary(unsigned long n),运行是如何自动递归循环的,这也没有循环语句啊。比如,我输入9,输出是1001.可我看代码,应该就只输出一个1,为什么会循环输出后面几位。
还有递归一定要自定义分离出一个函数么,,如果把下面自定义的函数去掉,直接在int main()函数里表述,改如何写这个程序啊。
有没有前辈指点一下,,自学小菜鸟求教!!!
将参数n/2作为参数再一次调用此函数,以此作为递归,直到n<2时,才进行每一层递归函数的返回输出。
void to_binary(unsigned long n)
{
int r;
r = n % 2;
if (n >= 2)
to_binary(n / 2); // 将参数n/2作为参数再一次调用此函数,以此作为递归
putchar(r == 0 ? '0' : '1');
return;
}
……为什么只输出一个1啊?
if (n >= 2)
to_binary(n / 2);
putchar(r == 0 ? '0' : '1');--------如果说你说这里输出1,那么上面两句你觉得不运行了吗?
递归就是自己调自己啊,你看to_binary会自己调用自己。要把自己调用自己写成代码,确实需要单独写一个函数,不然怎么实现一个代码块调用自己本身这个代码块呢?你说是吧
纯C编程思想是主要是面向过程,大部分功能是函数实现的,为什么不用函数?
递归是倒推,一直循环直到结束。
/除法 %余数
自己调用自己慢慢调吧