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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值