递归函数的应用场景:
- 数学定义递归的,如计算阶乘
- 数据结构是递归的,如单向链表、
- 问题的解法是递归的,非数值计算领域存在很多必须用递归法才能解决的经典问题,如汉诺塔(Hanoi)塔、骑士游历、八皇后问题(回溯法)
一、定义:函数自己调用自己,有先序递归和后序递归
#include <stdio.h>
void text(int n)
{
if(n > 0) //终止条件
{
n--;
printf("n = %d\n", n); //先序递归,代码顺序执行
text(n);//函数递归,即自己调用自己
printf("n1 = %d\n", n);//后续递归,代码逆序执行
}
}
int main()
{
int i = 3;
text(i);
return 0;
}
递归的过程分析
注:递归要有终止条件,即这里的
if(n > 0)
二、十进制转二进制
#include <stdio.h>
void bin (int n) //十進制轉十六進制
{
int i = n % 16;
if (n > 0)
{
bin(n / 16);
printf("%d", i);
}
}
int main()
{
int i = 15;
bin(i);
return 0;
}
三、斐波拉契数列:0,1,1,2,3,5,8.。。
·int fib(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
else
{
return fib (n - 1) + fib(n - 2);
}
}
int main()
{
printf("%d\n",fib(3));
return 0;
}