有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?java递归
时间: 2024-05-09 14:17:21 浏览: 71
可以使用递归来解决这个问题,每一天卖出的数量都是上一天的一半多两个,直到卖完为止。
首先定义一个方法来计算每一天卖出的数量:
```
public static int sell(int n) {
if (n == 1) {
return 1;
} else {
return sell(n - 1) * 2 + 2;
}
}
```
参数n表示第n天,如果是第一天则卖出1个,否则卖出上一天的数量的两倍再加上2个。
接下来定义一个方法来计算需要多少天才能卖完:
```
public static int sellAll(int n, int count) {
if (n == 0) {
return count;
} else {
return sellAll(n - 1, count + sell(n));
}
}
```
参数n表示还剩下多少个西瓜需要卖出,参数count表示已经卖出的数量。如果剩下的数量为0,则返回卖出的数量;否则继续递归计算卖出的数量,并将其加上已经卖出的数量。
最后在main方法中调用这个方法即可:
```
public static void main(String[] args) {
int n = 1020;
int days = sellAll(n, 0);
System.out.println("需要" + days + "天才能卖完。");
}
```
输出结果为:
```
需要10天才能卖完。
```
阅读全文