由于函数调用其本身,所以函数中的所有语句都会从上到下执行一遍,在调用其本身的语句进入下次循环结束后会在调用语句后继续执行,所以使用递归算法输出一个正整数的二进制形式程序如下:
#include<stdio.h>
#include<stdlib.h>
void sum();
int main()
{
int i;
printf("请输入数字:\n");
scanf("%d",&i);
sum(i);
printf("\n");
return 0;
}
void sum(int a)
{
if(a>0)
{
sum(a/2);
printf("%d",a%2);
}
}
这个程序输出的依旧是十进制的字符串,所以结果并不能作为二进制数被其他程序调用
总的来说,递归算法在某种情况上比常规循环算法好用很多,但如果嵌套次数过多反而会有栈溢出的错误,所以一定要注意总的嵌套层数不能过深
虽然一般情况不会溢出,但林子大了啥玩意都会有