题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:
1月1对a
2月1对a
3月2对,a+a1
4月3对,(a+a1)+a1
5月5对,((a+a1)+a1)+a1+a11
类推得出规律,当月出生的兔子等于前两月出生的兔子的总和。
java代码:
public class No1
{
public static void main(String[] args){
int i;//i表示月数
int arr[]=new int[12];
arr[0]=arr[1]=1;
System.out.println("第1个月兔子1对"+","+"兔子总数2个");
System.out.println("第2个月兔子1对"+","+"兔子总数2个");
for(i=2;i<13;i++){
arr[i]=arr[i-2]+arr[i-1];
System.out.println("第"+(i+1)+"个月兔子"+arr[i]+"对"+","+"兔子总数"+(2*arr[i])+"个");
}
}
}
php代码:
<?php
$n;
$n1=1;$n2=1;
for($i=1;$i<=12;$i++){
if($i==1||$i==2){
echo "第".$i."月兔子数量是:1对。\n";
}else{
$n = $n2;//把上一月的数量赋值给临时变量
$n2 = $n1 + $n2;//上月加上上月的数量
$n1 = $n;//下次上上月的数量是这次上月的数量
echo "第".$i."月的兔子数量是:".$n2."对。\n";
}
}
?>
c语言代码:
#include <stdio.h>
int main(){
int temp;
int m1 = 1,m2 =1;
for(int i=1;i<=12;i++){
if(i==1||i==2){
printf("第%d月的的兔子数量是:1,对。\n",i);
}else{
//把相对于相对于当前月的上月赋值
temp = m2;
//求当前月的数量,同时也是下次的上月数量
m2 = m1 + m2;
//重新设置上上月兔子的数量
m1 = temp;
printf("第%d月的的兔子数量是:%d,对。\n",i,m2);
}
}
}
C++;
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char const *argv[])
{
int f1 = 1,f2 = 1,f;
cout << "第1月兔子数量" << f1 << "对" << endl;
cout << "第2月兔子数量" << f2 << "对" << endl;
for (int i = 3; i <= 12; ++i)
{
f = f2;
f2 = f1 + f2;
f1 = f;
cout << "第" << i << "月兔子数量" << f2 << "对" << endl;
}
return 0;
}