java 一道递归题
来源:百度知道 编辑:UC知道 时间:2024/05/30 04:32:31
public class Exercise222 {
public static void main(String args[]){
y1 ob = new y1(10);
for (int i = 0;i<10;i++) {ob.values[i]=i;
System.out.println("ob.values["+i+"]is"+i);}
ob.shuzu(10);
}
}
class y1 {
int values [];
y1(int x2){
values = new int[x2];
}
void shuzu(int y){
System.out.println("这个y"+y);
if (y==0) {System.out.println("这是第一次"); return;}
else {shuzu(y-1); System.out.println("现在"+(y-1));}
System.out.println("["+(y-1)+"] "+values[y-1]);
}
}
打印的结果如下:
ob.values[0]is0
ob.values[1]is1
ob.values[2]is2
ob.values[3]is3
ob.values[4]is4
ob.values[5]is5
ob.values[6]is6
ob.values[7]is7
ob.values[8]is8
ob.values[9]is9
这个y10
这个y9
这个y8
这个y7
这个y6
这个y5
这个y4
这个y3
这个y2
public static void main(String args[]){
y1 ob = new y1(10);
for (int i = 0;i<10;i++) {ob.values[i]=i;
System.out.println("ob.values["+i+"]is"+i);}
ob.shuzu(10);
}
}
class y1 {
int values [];
y1(int x2){
values = new int[x2];
}
void shuzu(int y){
System.out.println("这个y"+y);
if (y==0) {System.out.println("这是第一次"); return;}
else {shuzu(y-1); System.out.println("现在"+(y-1));}
System.out.println("["+(y-1)+"] "+values[y-1]);
}
}
打印的结果如下:
ob.values[0]is0
ob.values[1]is1
ob.values[2]is2
ob.values[3]is3
ob.values[4]is4
ob.values[5]is5
ob.values[6]is6
ob.values[7]is7
ob.values[8]is8
ob.values[9]is9
这个y10
这个y9
这个y8
这个y7
这个y6
这个y5
这个y4
这个y3
这个y2
【这样改就不会升了】
void shuzu(int y){
System.out.println("这个y"+y);
if (y==0) {
return;
} else {
shuzu(y-1);
}
}
【简单说明】
递归思想只适合于解决一些特殊的问题。如:遍历一个二叉树。
这样的问题用递归是最简单的实现方法。
但是递归并不是那么容易掌握的,你要明白方法调用与栈的关系。
这就需要自己多练习,多思考了。
【提示】
所有的递归操作,都可以使用循环来代替。
如果不是非常特殊的操作,尽量不要使用递归,浪费栈空间。
并且容易造成栈溢出。
【多说一句】
有些东西是需要自己多思考,才会有收获的。
【补充】【这样改就变成升的了】
void shuzu(int y){
if (y==0) {
} else {
shuzu(y-1);
}
System.out.println("这个y"+y);
}
【你的代码很不规范,读起来很费事】
这个东西虽然我明白 但是还真是不好说
我简单的说一下看看你能明白不?
从"这个y10"开始时,是执行ob.shuzu(10)
但是在shuzu(int y);中输出的句子应该是三条吧?
要是没有调用shuzu(y-1)的话,输出就是:
这个y10
现在9
[9] 9
对吗?
但是在调用了shuzu(y-1)的话,也就是在第一行和第二行之间有输出了一个shuzu(10-1)
结果就是:
这个y10
这个y9
现在8