1.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只见剩下一个桃子了。求第一天共摘了多少。
/**
* 程序分析:采取逆向思维的方法,从后往前推断。
* 第10天时,只剩下1个桃子
* 不难推断当第9天的时候剩下4个桃子,第8天剩下10个桃子
* 我们可以采用for循环从第10天开始
* 第10天桃子数n = 1;第九天 n = (1 + 1) * 2 或者 n = (n + 1) * 2
*/
public class Test {
public static void main(String[] args) {
int n = 1;
// 第10天桃子n = 1;所以从第9天开始计算
for (int i = 9; i > 0; i--) {
n = (n + 1) * 2;
}
System.out.println("总共摘了"+ n + "个桃子!");
}
}
2.打印金字塔
import java.util.Scanner;
/**
* 打印出一座金字塔
* 题目分析 *
* ***
* *****
* *******
* 第1行1个* 第1行3个空格
* 第2行3个* 第2行2个空格
* 第3行5个* 第3行1个空格
* 第4行7个* 第4行0个空格
* 第i行:i * 2 - 1 个* 第i行:n(总行) - i(行)个空格
* 循环j=j <= 2 * i - 1 循环k = 0; k < n - i;k++
*/
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for (int i = 1; i <= n; i++) {
for (int k = 0; k < n - i;k++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1;j++) {
System.out.print("*");
}
System.out.println("");
}
}
}