#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; } }