由于对一些小学算术题还是比较感兴趣,大学的时候也没有去编程实现过,所以,想在研究生阶段把这些问题给自己编一下,从今天开始,每天编1~几个,同时也能对java进行熟悉。今天先第一道。
问题描述如下:
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
经典的斐波那契数列问题。
一、一般方法,用for循环来简单实现。代码如下:
import javax.swing.JOptionPane;
public class tuzidigui {
public static void main(String[] args) {
String s1 = JOptionPane.showInputDialog("需要多少个月:");
int n1 = Integer.parseInt(s1);
int f1 = 1;
int f2 = 1;
int sum = 0;
for(int i = 3; i <= n1; i++) {
sum = f1 + f2;
f1 = f2;
f2 = sum;
}
System.out.println("总共的兔子数为:" + sum);
}
}
二、用递归来做
思想很简单,递归的出口是月份为1和2的时候返回1,代码如下:
import javax.swing.JOptionPane;
public class tuzi {
public static void main(String[] args) {
String s1 = JOptionPane.showInputDialog("需要多少个月:");
int n1 = Integer.parseInt(s1);
tuzi t1 = new tuzi();
int sum = 0;
sum += t1.shumu(n1);
System.out.println(sum);
}
public int shumu (int i) {
if (i == 1 || i == 2)
return 1;
else
return shumu (i - 1) + shumu (i - 2);
}
}