数据结构与算法:递归

版权声明:本文为博主原创文章,未经博主允许可以转载。(转呀转呀/笑哭),希望标注出处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);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_36428171/article/details/88415656