您的位置:首页 > 其它

兔子算法问题

2014-05-15 17:57 363 查看
有一对兔子,从出生后的第三个月起开始生出一个小兔子,小兔子长到三个月大也开始生出小兔子,假如兔子不会死,问20个月后兔子总数 ?


1,1,2,3,5,8,13,21....第30个是什么...?

这两个题其实是一个题目。

这个问题有两种解决思路:for循环和递归算法

程序分析:



第一个月-----------------1

第二个月-----------------1

第三个月-----------------2

第四个月-----------------3

第五个月-----------------5

第六个月-----------------8

第七个月-----------------13

for循环:

#include <stdio.h>  

  

int main()  

{  

    int m[23];  

    int i;  

    m[0]=m[1]=1;  

    for (i=0; i<24; i++) {  

        if (i==0 || i==1) {  

            printf("第%d个月月兔子数量为:1对\n",i+1);  

        }  

        else {  

            m[i]=m[i-1]+m[i-2];  

            printf("第%d个月月兔子数量为:%d对\n",i+1,m[i]);  

              

        }  

    }  

    return 0;  

}  

递归:

package exam;

import java.util.Scanner;

public class diGui {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scaner = new Scanner(System.in);

int n = scaner.nextInt();

int value = new diGui().getValue(n);

System.out.println("第"+n+"位="+value);

}

public int getValue(int n) {

if (n<=0) {

return 0;
}else if(n>=0&&n<=2 ){
return 1;
}else {

return getValue(n-1)+getValue(n-2);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归算法 递归 算法