百钱百鸡问题
100文钱,公鸡3文一只,母鸡2文一只,小鸡1文三只
public static void main(String[] args) {
for(int a = 0;a <= 33;a++){//公鸡最多
for(int b = 0;b <= 50;b++){//母鸡最多
for(int c = 0;c <= 100;c++){//小鸡最多
if(c % 3 != 0){//小鸡必须是3的倍数
continue;
}
int sum = 3 * a + 2 * b + c / 3;
if(sum == 100 && a + b + c == 100){
System.out.println(a + "," + b + "," + c);
}
}
}
}
}
斐波拉契数列
//斐波拉契数列 前面两项之和等于第三项
public static void main(String[] args) {
System.out.println(sum(20));
}
public static int sum(int n){
if(n == 1 || n == 2) {
return 1;
}
return sum(n - 1) + sum(n-2);
}
汉诺塔问题
递归思想
public static void main(String[] args) {
hnt(2,'a','b','c');
}
/**
*
* @param n 盘子个数
* @param a 初始柱子
* @param b 辅助柱子
* @param c 最终柱子
*/
public static void hnt(int n,char a,char b,char c){
if(n == 1){
System.out.println("from " + a + " to " + c);
}else{
hnt(n - 1,a,c,b);// 倒数第三步
System.out.println("from " + a + " to " + c);// 倒数第二步
hnt(n - 1,b,a,c);// 倒数第一步
}
}