1、打印菱形
/**
* 单纯用循环输出图案
*
* @param n
*/
public void exe1(int n) {
int ceng = n / 2 + 1;
//上半部分
for (int i = 0; i < ceng; i++) {
for (int j = 0; j < ceng - i - 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
//下半部分
for (int i = 0; i < ceng - 1; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * (ceng - i - 2) + 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
2、斐波那契数列
1 1 2 3 5 8 13 21 ...
下一个数等于前两个数之和
public int suan(int n) {
if (n <= 1){
return n;
}
return suan(n-1) +suan(n-2);
}
/**
* 普通方法
* @param n 第n个数 从1开始
* @return
*/
public int putong(int n){
int[] ints = new int[n];//定义一个数数组
for (int i = 0; i < n; i++) {
if (i<1){
ints[i]=1;
}
ints[i+2]=ints[i]+ints[i+1];//后一个数等于前两个数之和
}
return ints[n-1];
}
猴子吃桃问题
* 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 * 以后每天早上都吃了前一天剩下的一半零一个。 * 到第10天早上想再吃时,就只剩一个桃子了。 * 编程求第一天共摘了多少桃子。
/**
* 普通方法
*/
public void puTong() {
int s = 1;
for (int i = 9; i > 0; i--) {
s = (s + 1) * 2;
System.out.println("第" + i + "天有" + s + "个桃子");
}
}
/**
* 递归调用
* @param n
* @return
*/
public int fn(int n) {
if (n == 10) {
return 1;
}
return (fn(n + 1) + 1) * 2;
}