下面两个例子的递归思想是一样的,很简洁和有意思!
例子1:
(1)需求:一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来(先递增再递减)
(2)代码
//方法
public static void getNum(int n){
//打印递增的数
System.out.println(n);
//递归调用
if(n<=5000){
getNum(2*n);
}
//打印递减的数
System.out.println(n);
}
//测试代码
public static void main(String[] args) {
getNum(1237);
}
(3)效果
例子2:
(1)需求:输入星星数打印出来对称的直角三角形*
(2)代码:
//方法:a和b分别为星星最少的那行的星星数和星星最多的那行的星星数
public static void tri(int a, int b) {
//打印三角形上半部分
//字符数组默认初始值是'\0',因此以new char[2]为例:其两个字符值均为'\0',转换为字符串后为"\0\0",用*取代\0,即可得**
System.out.print(new String(new char[a])
.replace("\0", "*"));
System.out.println();
//递归调用
if (a != b) {
tri(a + 1, b);
}
//打印三角形下半部分
System.out.print(new String(new char[a])
.replace("\0", "*"));
System.out.println();
}
//测试代码
public static void main(String[] args) {
tri(1,4);
}
(3)效果