生兔子问题求第三解 有一对兔子,从出生后第3个月起每个月都生一兔子,小兔子长到第三个月后每个月又生一兔子,问第X月有几只兔子我知道递归和第三项等于前两项和的写法,据说递归都可以改成FOR循环,求FOR循环解! 递归和找规律的就不要发了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [/code]#include <stdio.h>#define MAX 44int num[44];int main(void) { int n; //由于第一个月和第二个月的兔子数是知道的 //可以预处理,将数列中的值都求出来,保存在一个数组里面 //由于数列的增长非常快 //int类型只能保存数列的前44项 num[0] = 1; num[1] = 1; for(int i = 2 ; i <= MAX ; ++i) { num[i] = num[i - 1] + num[i - 2]; } //输入你想要得到的月份的兔子数 int month; while(scanf("%d", &month) != EOF) { //ctrl + z退出输入 //直接从num数组中获得数据 printf("%d\n", num[month]); } return 0;}[/code] import java.lang.*;public class Test { public static void main(String[] args) { int num[] = new int[44]; num[0] = 1; num[1] = 1; int i = 0; for(;i <= 44 ; ++i) { num[i] = num[i - 1] + num[i - 2]; } //和LS的程序相同处理 }} 斐波那契数列public class Test { public static void main(String[] args) { long n = fibonacci(40); System.out.println("F(40) = " + n); } public static long fibonacci(int month) { if(month < 1) { return 0; } double sqrt5 = Math.sqrt(5); double a = Math.pow((1 + sqrt5) / 2, month); double b = Math.pow((1 - sqrt5) / 2, month); double r = (sqrt5 / 5) * (a - b); return Math.round(r); }}公式: 每个月兔子增加的数量为:第一个月:1第二个月:1第三个月:2第四个月:3。。。第n个月为:第n-1个月+第n-2个月程序为:class RabittsSum{ public static sum(int n) { int number_rabit=0; int first_temp=0; int second_temp=1; int temp=0; for(int i=1;i<=n;i++) { number_rabit+=second_temp; temp=second_temp; second_temp+=first_temp; first_temp=temp; } }} ButtonUI怎么用? 关于GUI的, Java1.4与1.5版本不同,带来的问题 接口和他的实现类 一道java笔试题 请问怎样获得某个目录下的某种文件的文件名列表,如 *txt 如果把applet编议为.exe 关于jbuilder的问题,来者有分。 用 java 命令运行 .class 出错,怎么办 安装jbuilder5时为什么bas4.5无法安装? BorderLayout布局 一个高深的多线程问题—— 多线程中的多态机制
#include <stdio.h>#define MAX 44int num[44];int main(void) {
int n;
//由于第一个月和第二个月的兔子数是知道的
//可以预处理,将数列中的值都求出来,保存在一个数组里面
//由于数列的增长非常快
//int类型只能保存数列的前44项
num[0] = 1;
num[1] = 1;
for(int i = 2 ; i <= MAX ; ++i) {
num[i] = num[i - 1] + num[i - 2];
}
//输入你想要得到的月份的兔子数
int month;
while(scanf("%d", &month) != EOF) { //ctrl + z退出输入
//直接从num数组中获得数据
printf("%d\n", num[month]);
}
return 0;
}
[/code]
import java.lang.*;public class Test {
public static void main(String[] args) {
int num[] = new int[44];
num[0] = 1;
num[1] = 1;
int i = 0;
for(;i <= 44 ; ++i) {
num[i] = num[i - 1] + num[i - 2];
}
//和LS的程序相同处理
}
}
long n = fibonacci(40);
System.out.println("F(40) = " + n);
} public static long fibonacci(int month) {
if(month < 1) {
return 0;
}
double sqrt5 = Math.sqrt(5);
double a = Math.pow((1 + sqrt5) / 2, month);
double b = Math.pow((1 - sqrt5) / 2, month);
double r = (sqrt5 / 5) * (a - b);
return Math.round(r);
}
}公式:
第一个月:1
第二个月:1
第三个月:2
第四个月:3
。
。
。
第n个月为:第n-1个月+第n-2个月
程序为:
class RabittsSum
{
public static sum(int n)
{
int number_rabit=0;
int first_temp=0;
int second_temp=1;
int temp=0;
for(int i=1;i<=n;i++)
{
number_rabit+=second_temp;
temp=second_temp;
second_temp+=first_temp;
first_temp=temp;
}
}
}