在学习java之前,看过别的语言描述的递归。对递归也有大致的认识,遇到一些简单的显而易见的递归问题也能解决,但对递归的实现过程还是不了解。昨天痛下决心要把数据结构再深刻的学习一下,还是从递归学起。说白了递归就是自己调用,当然得有一个停止的条件,否则会无限制的调用下去。
拿两个例子对递归做初步认识吧
public static void f(int n){
System.out.println(n);
if( n > 1){
f( n - 1);
}
}
public static void ff(int n){
if( n > 1){
ff( n - 1);
}
System.out.println(n);
}
f(3),ff(3)它们会打印出什么结果呢
分析这个过程 首先是f(3)执行打印3
然后 f(3)调用f(2)
打印2
这时n= 2仍然大于1调用f(1)
打印1
同时调用完毕 结束 得到以上的结果
这是一个显而易见比较好分析的递归过程
待续分析ff(3)的递归过程
拿两个例子对递归做初步认识吧
public static void f(int n){
System.out.println(n);
if( n > 1){
f( n - 1);
}
}
public static void ff(int n){
if( n > 1){
ff( n - 1);
}
System.out.println(n);
}
f(3),ff(3)它们会打印出什么结果呢
分析这个过程 首先是f(3)执行打印3
然后 f(3)调用f(2)
打印2
这时n= 2仍然大于1调用f(1)
打印1
同时调用完毕 结束 得到以上的结果
这是一个显而易见比较好分析的递归过程
待续分析ff(3)的递归过程