本文主要列举了C语言函数递归的几个简单示例,包括打印一个整数的每一位,N的阶乘,strlen的模拟,计算一个数的每位之和,字符串逆序,计算斐波那契数,实现n的k次方;对个别示例还给出非递归方法,以判断递归的优劣势。
1. 函数递归概念
程序调用自身的编程技巧称为递归 。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,可以把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
2.两个必要条件
(1)要有限制条件;
(2)每次调用都会向限制条件靠近;
3.简单案例
(1)递归实现打印一个整数的每一位
int pr (int a)
{
if (a > 9)
{
pr(a / 10);
}
printf("%d " , a%10);
}
int main()
{
int num = 1234;
pr(num);
return 0;
}
通过取余的方式去掉整数的最高位,用除10输出的每一位。
(2)N的阶乘(不考虑溢出的情况下)
int jc(int b)
{
if (b < 1)
{
return 1;
}
else
{
return b * jc(b - 1);
}
}
int main()
{
int a = 5;
int d = jc(a);
printf("%d的阶乘:%d",a,d);
return 0;
}
对比N的阶乘非递归