版权声明:本文为博主原创文章,未经博主允许可以转载。(转呀转呀/笑哭),希望标注出处hhh https://blog.csdn.net/qq_36428171/article/details/88415656
递归
简单理解:对函数自身反复调用
当问题是重复的子问题,递归可以很好的实现
简例:斐波那契数列的迭代实现
F(0)=0,F(1)=1
斐波那契数列F(n)=F(n-1)+F(n-2) (n>1)
遍历:
#include<stdio.h>
int main(){
int fib[40];
fib[0] = 0;
fib[1] = 1;
for(int i=2; i < 40; i++)
{
a[i] = a[i-1] + a[i-2];
printf("%d\n" , a[i]);
}
return 0
}
递归:
int Fib(int n){
if( n < 2)
return i == 0 ? 0 : 1;
return Fib(i-1) + Fib(i-2);
}
简例:汉诺塔问题
三个柱子,A、B、C
void move(int n , char A, char B , char C){
if(n == 1){
printf("%c----->%c" , A , B);
}
else{
move (n-1,A , B , C);
printf("%c----->%c" , A , C);
move (n-1, B, A, C);
}
}