直接或间接的调用自身的算法称为递归算法,用函数自身给出定义的函数称为递归函数。
递归算法结构清晰,程序简洁,可读性强,而且容易用数学归纳法来证明算法的正确性,但递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多
汉诺塔问题:
#include<stdio.h>
void hanoi(int n,char a,char b,char c)
{//把n个盘子从a柱移动到c柱
if(n>0)
{
hanoi(n-1,a,c,b);//n-1个盘子从a移动到b
printf("%c->%c\n",a,c);//1个盘子从a移动到c
hanoi(n-1,b,a,c);//n-1个盘子从b移动到c
}
}
int main(){
int n=0;
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}
运行结果为: