递归的思想有点不清晰啊!
只有一次调用都很好理解,但是多次调用思路就乱了!
复杂点的看别人的可以看懂,但是自己动手写不出来!
递归是怎么理解的,有没有什么秘方,诀窍,好点的学习方法,大家讨论下啊!
谢谢了!!!呵呵~~~~~~~~~
long Fibonacci(int n)
{
if(n==1||n==2) return 1;//递归出口
else return Fibonacci(n-1)+Fibonacci(n-2);//递归式,且每次递归,参数规模n都在减小.
}
当然这个例子也比较简单.反正大都递归程序都是由这三部分组成,只是它们的分量不同而已.
再举个二叉树前序遍历的.
void Preorder1(Bintree t)
{
if(t!=NULL)//出口条件t==NULL
{
printf("%c",t->data);//执行体
Preorder1(t->lchild);//递归子式1
Preorder1(t->rchild);//递归子式2
//经过这两步的递归,递归的规模越来越小,即界函数是递减的.
}
}
long Fibonacci(int n)
{
if(n==1||n==2) return 1;//递归出口
else return Fibonacci(n-1)+Fibonacci(n-2);//递归式,且每次递归,参数规模n都在减小.
}
当然这个例子也比较简单.反正大都递归程序都是由这三部分组成,只是它们的分量不同而已.
再举个二叉树前序遍历的.
void Preorder1(Bintree t)
{
if(t!=NULL)//出口条件t==NULL
{
printf("%c",t->data);//执行体
Preorder1(t->lchild);//递归子式1
Preorder1(t->rchild);//递归子式2
//经过这两步的递归,递归的规模越来越小,即界函数是递减的.
}
}
那怎么设计一个递归函数,假如我要写一个hanoi tower的模拟式,我该怎么思考?如何写?
教教我