您的位置:首页 > 其它

算法--兔子生兔子的问题(费氏数列)

2012-07-20 20:25 323 查看
#include <stdio.h>
int Fib( int n )
{
// 说明// Fibonacci 为 1200 年代的欧洲数学家 , 在他的着作中曾经提到 : 「若有一只免子每个月生一只小 免
// 子 , 一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三
// 只免子,三个月后有五只免子(小免子投入生产) ...... 。
// 如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生
// 产,类似的道理也可以用于植物的生长,这就是 Fibonacci 数列,一般习惯称之为费氏数列,例
// 如以下: 1 、 1 、 2 、 3 、 5 、 8 、 13 、 21 、 34 、 55 、 89......
// 输入:月/
/ 输出:月对应的兔子数
if( n>=0 ){
if( n==1 || n==0 ) return 1;
return Fib(n-1)+Fib(n-2);
}else return 0;
}
int main(int argc, char *argv[])
{
int n;printf( "Please input n:" );
scanf( "%d", &n );
printf( "%d", Fib(n) );
return 0;
}

Java版

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.Buffer;

public class Fib {
public static void main( String args[]){
String s = null;
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s = br.readLine();

}catch( IOException e)
{
System.out.println("读写字符流出错!"+e);
System.exit(-1);
}catch( NumberFormatException e)
{
System.out.println("你输入的数据不是合法的!\n"+e);
System.exit(-1);
}
System.out.println( Integer.valueOf(s)+"个月后共有兔子数为"+Fib(Integer.valueOf(s))+"只!");
}
public static int Fib( int n )
{
if( n>=0 )
{
if( n==1 || n==0 ) return 1;
return Fib(n-1)+Fib(n-2);
}
else return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: