递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。【这点尤为重要】
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
打印从1到100,普通方法是循环100次,可用递归打印【实际中不建议用递归】;网上看过其他非递归非循环方法直接打印
public class Print1_100 {
public static void main(String[] args) {
printX(1,100);
}
public static void printX(int start,int end){
if(start>end){
return;
}
System.out.println(start);
start++;
printX(start,end);
}
}
99乘法表,普通方法是写2个for循环(内层用j,外层用i);也可以写一层for(i,j条件放到一起)
//2层for循环
public class Jj {
public static void main(String[] args) {
// TODO 自动生成的方法存根
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + i * j);
if(j<i)//是否填写""
System.out.print(" ");
}
System.out.println();
}
}
}
采用递归的方法:(案例中将i,j定义为static)
public class Test {
static int i = 1;
static int j = 1;
public static void main(String[] args) {
jj(9);
}
public static void jj(int n) {
if (i > n) {
return;
}
for (; i <= n;) {
System.out.print(j + "*" + i + "=" + (i * j) + " ");
if (i == j) {
j = 1;
i++;
System.out.println();
continue;
}
j++;
jj(i);
}
}
}
最后画图说明了下,不足之处望指出!