递归:当一个复杂的问题可以分解为诸多简单的问题,并且解决这些问题的代码非常相似时,就可以考虑使用递归算法。

例如  1:求n的阶乘

#include <stdio.h>

int Fact(int n)
{
if(n <= 1)
{
return 1;
}
else
{
return n*Fact(n-1);
}
}

int main()
{
int n = 0;
int sum = 0;
scanf("%d",&n);
sum = Fact(n);
printf("%d",sum);
return 0;
}


2:给一个无符号数,要求从最高位到最低位顺序输出

//输入1234;则输出1  2  3  4

#include <stdio.h>

void print(int n)
{
if(n/9)
{
print(n/10);
}
printf(" %d ",n%10);
}

int main()
{
unsigned int num = 0;
scanf("%u",&n);
print(num);

return 0;
}


3:斐波那契数列

#include <stdio.h>

int Fib()
{
if(n <= 2)
{
return 1;
}
else
{
return Fib(n-1) + Fib(n-2);
}
}


int main() // 1 1 2 3 5 8 13 21 34 55
{
int n = 0;
int m = 0;
scanf("%d",&n);
m = Fib(n);
printf("%d",m);

return 0;
}