打印一个数的每一位
#include <stdio.h>
void print(int n){
if (n > 9){
print(n / 10);
}
printf("%d\n", n % 10);
}
int main(){
int sum=4859;
print(sum);
return 0;
}
递归和非递归分别实现求n的阶乘
递归方式实现:
long long Fac(int N)
{
if(N <= 1)
return 1;
return Fac(N-1)*N;
}
/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{
long long ret = 1;
for(int i = 2; i <= N; ++i)
{
ret *= N;
}
return ret;
}
递归实现n的k次方
int Pow(int n, int k)
{
if(k==0)
return 1;
else if(k>=1)
{
return n*Pow(n, k-1);
}
}
递归和非递归分别实现求第n个斐波那契数
例如:
输入:5 输出:5
输入:10, 输出:55
输入:2, 输出:1
long long Fac(int N)
{
if(N < 3)
return 1;
return Fac(N-1) + Fac(N-2);
}
思路:
一个问题直接求解时不好求解,如果可以将其划分成其子问题,并且子问题和原问题有相同的解法时,就可以使用递归的方式解决
递归的两个条件:
- 将问题划分成其子问题,要求:子问题要与原问题具有相同的解法
- 递归的出口