循环改递归
- ·改为递归的关键是发现逻辑“相似性"
- 不要忘记递归“出口”
```java
```java
//java实现
public class Print1To10 {
//采用循环
static void F(int a, int b) {
for (int i = a; i <= b; i++) {
System.out.println(i);
}
}
//采用递归
static void P(int begin, int end) {
if (begin < end) { //递归的出口
P(begin, end - 1);//除去我们做的事情,剩下的给别人做
}
System.out.println(end);//我们做的事情
}
//采用递归
static void P1(int begin,int end) {
if (begin>end) { //递归的出口
return;
}
System.out.println(begin);//我们做的事情
P1(begin+1,end);//除去我们做的事情,剩下的给别人做
}
//采用递归
static void P2(int n) {
if (n>1) { //递归的出口
P2(n-1);//除去我们做的事情,剩下的给别人做
}
System.out.println(n);//我们做的事情
}
public static void main(String[] args) {
F(1, 10);
P(1,10);
P1(1, 10);
P2(10);
}
}
所谓的递归就是函数自己调用自己而已, 循环本质上也是一种递归。
使用循环和递归, 在理论上是具有相同的计算能力的。 但是,面对不同的实际问题, 选择哪一种方式,是另一个问题。 两者各有利弊。