递归:方法定义中调用方法本身的现象。(体现拆分合并的思想)
注意事项:1.递归要有出口,否则就是死递归,会造成栈溢出(StackOver)
2.递归次数不能太多,否则会有栈溢出的风险。。 例子:斐波那契数列
public class RecursiveDemo {
//斐波那契数列递归写法
long F(int n){
if(n<=1) return n;
return F(n-1)+F(n-2);
}
//斐波那契数列递推写法
long F1(int n){
if(n<=1) return n;
long fn=0;
long fn_1=1;
long fn_2=0;
for (int i=2;i<=n;i++){
fn=fn_1+fn_2;
fn_2=fn_1;
fn_1=fn;
}
return fn;
}
}
5的阶乘
public static void main(String[] args) {
DiGui a = new DiGui();
System.out.println(a.jc(5));
}
public int jc(int i){
if(i==1){
return 1;
}else{
return i*jc(i-1);//此处写成i--会栈溢出
}
}
194

被折叠的 条评论
为什么被折叠?



