为了练习scala,特地从网上找来Java经典问题算法大全,用scala来实现,记录于此。
/*【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
*/
方法1:
- object FirstRabit extends App{
- var (f, f1, f2) = (1L, 1L, 1L)
- val MONTH = 15L
- for(i<- 1L to MONTH){
- if(i <3) {
- f2 =1
- } else {
- f = f1 + f2; f1 = f2; f2 = f
- }
- println("第 " + i + " 个月兔子的对数为:" + f)
- }
- }
- object FirstRabit extends App{
- def func(x: Long): Long = {
- if(x== 1 ||x== 2) return 1L else func(x - 1)+func(x - 2)
- }
- (1L to 15L).map{x=> println("2.第" + x + "个月兔子的对数为:"+func(x))}
- }
/* 【程序2】
* 公鸡3元一只,母鸡2元一只,小鸡1元3只.有100元要买100只鸡,必须花光钱,怎样买
*/
- object Buy100Chicken extends App{
- for(x<-(1 to 100)) {
- for(y<-(1 to 100)) {
- for(n<-(1 to 100)) {
- if((x+y+3*n == 100) && (3*x+2*y+n==