递归:
易于理解
速度慢
存储空间大
循环
不易于理解
速度快
存储空间小
1.求阶乘
2.1+2+3+4+。。。+100的和
3.汉诺塔
4.走迷宫(CS的实现)
递归的运用:
树和森林就是以递归的方式定义的
树和图的很多算法都是以递归来实现的
很多数学公式就是以递归的方式定义的
斐波拉契序列
12 3 5 8 13 21 34。。。
#include<stdio.h> void hanota(int num,char A,char B,char C) { //如果只有一个元素,那么直接把这个元素,移动到C if(1==num) { printf("把第%d个元素从%c移动到%c\n",num,A,C); }else{ //如果不是第一个元素,先把前n-1个元素,借助C移动到B hanota(num-1,A,C,B); //然后把A最下面的元素移动到C printf("把第%d个元素从%c移动到%c\n",num,A,C); //然后再把B上的元素借助A移动到C hanota(num-1,B,A,C); } } int main() { char A='A'; char B='B'; char C='C'; hanota(3,A,B,C); return 0; }
数据结构基础(6)--递归和函数调用--汉诺塔问题C语言实现
原文地址:http://blog.csdn.net/davidluo001/article/details/46622187