递归:
/**
* 一个小球从100米空中落下,每次反弹一半高度,小球总共经过多少米,请问第10次反弹的高度是多少
*/
public class Basketball {
private static int NUMBER = 1;//小球下落次数
public static void main(String[] args) {
System.out.print("请输入第几次:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
recurrence(n,100,50);//初始值(recurrence递归)
}
public static void recurrence(int n, float s, float h) {
if (n > 1){
NUMBER++;
recurrence(n-1,s+h*5/2,h/2);
}else {
System.out.println("小球第"+NUMBER+"次落地时经过的路径是"+s+"米,再弹起时的高度为"+h);
}
}
}
循环迭代:
/**
* 一个小球从100米空中落下,每次反弹一半高度,小球总共经过多少米,请问第10次反弹的高度是多少
*/
public class BasketBall_circulate {
public static void main(String[] args) {
System.out.print("请输入次数N:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int i;
float s=0,h=50;
for (i=1; i<=n; i++) {
if(i == 1) {
s = 100;//第一次落地
} else {
s += h*5/2;
h = h/2;
}
}
System.out.println("小球第"+n+"次落地时经过的路径是"+s+"米,再弹起时的高度为"+h);
}
}
参考:https://blog.csdn.net/qq892601059/article/details/73881846