C递归函数:
经过前面的介绍递归函数(一):介绍,我们对递归函数有了初步的认识,知道了先序递归和后序递归。接下来我们看几个递归函数的常见应用。
十进制转二进制
我们取一个十进制数13,其二进制为1101。
尝试性代码:
#include <stdio.h>
void bin(int n)
{
int i = n % 2; //十进制转换二进制就是不断对2取余数
printf("%d\n",i);
if(n>0) {
//递归函数必须有个条件,否则将会一直循环
bin(n / 2); //递归调用
}
}
int main()
{
int i=13;
bin(i);
return 0;
}
运行结果如下
发现问题:
- 13的二进制为1101,显示的是10110,顺序和正确的相反
- 前面多了一个0
对前面代码进行改造
#include <stdio.h>
void bin(int n)
{
int i = n % 2; //十进制转换二进制就是不断对2取余数
if(n>0)//递归函数必须有个条件,否则将会一直循环
{
bin(n / 2); //递归调用
printf("%d",i);//把printf放在if里面,并且换成后序递归,去掉\n
}
}
int main()
{
int i=13;
bin(i);
return 0;