一直不懂递归!请举例c++代码 清晰易懂的 谢谢!
对于递归的概念我是只懂意思而不知道用法,在程序中怎么实现!这一点我很郁闷,希望能给点力!
[解决办法]
f(int n)
{
if(n==1) return 1;
else return n*f(n-1);
}
这是一个求n的阶乘的递归程序。求n的阶乘相当于求n乘以(n-1)的阶乘,n-1的阶乘相当于求n-1乘以(n-2)的阶乘,一直类推下去,直至1,而1的阶乘知道,所以向后退,就可以算出n的阶乘了。
[解决办法]
就是自身调用自身吗,比如
void Foo(int i){ int j = i*i; //知道参数i的值大于100,便退出递归 if (j > 100) return; Foo(j);}
[解决办法]
最简单的例子就是求n!
先列出递归表达式 当 n =0 或 1,n!=1;当n>=2 n! = n*(n-1)!
#include <iostream>using namespace std;int fun(int n){ if(n==0) return 1; if(n==1) return 1; if(n>1) return n*fun(n-1);}int main(){ cout<<"5!="<<fun(5)<<endl; return 0;}
[解决办法]
自己调用自己就是递归了。如果没有一个合适的退出条件,理论上就会一直递归下去。
一个不太恰当的例子就是 鸡生蛋,蛋生鸡,到底是先有鸡还是先有蛋呢?
[解决办法]
写几个dfs。
[解决办法]
“给定一个小点的输入,完整单步跟踪一遍。”是理解递归函数工作原理的不二法门!
[解决办法]
http://baike.baidu.com/view/96473.htm
[解决办法]
用递归法计算1+2+。。。N的值。
#include<iostream.h>
int fn(int i);
void main()
{
int N;
cout<<"\n输入一个正整数:";
cin>>N;
cout<<"\n 1+2+...+"<<N<<"的结果是:"<<fn(N)<<"\n";
}
//递归函数的定义
int fn(int i)
{
if(i==1)
return 1;
else
return i+fn(i-1);
}