做的网站一定要收录么,建网站比较好,上海团购网站建设,廊坊网站制作公司排名题目#xff1a; 古典问题#xff0c;有一对兔子#xff0c;从出生后第3个月起每个月都生一对兔子#xff0c;小兔子长到第三个月后每个月又生一对兔子#xff0c;假如兔子都不死#xff0c;问每个月的兔子总数为多少?
程序分析#xff1a; 兔子的规律为数列1,1,2,3,…题目 古典问题有一对兔子从出生后第3个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子假如兔子都不死问每个月的兔子总数为多少?
程序分析 兔子的规律为数列1,1,2,3,5,8,13,21....即斐波那契数列。斐波那契数列Fibonacci sequence又称黄金分割数列、因数学家列昂纳多·斐波那契Leonardoda Fibonacci以兔子繁殖为例子而引入故又称为“兔子数列”指的是这样一个数列1、1、2、3、5、8、13、21、34、……在数学上斐波纳契数列以如下被以递归的方法定义 F(1)1F(2)1, F(n)F(n-1)F(n-2)n2n∈N*
算法思路 这是一个经典的斐波那契数列问题要求计算兔子的总数。 1. 首先通过Scanner类获取用户输入的整数n表示要计算前n个月的兔子总数。 2. 然后使用for循环遍历从1到n的每一个月份。 3. 在每个月份中调用Fib函数来计算当前月份的兔子总数。 4. Fib函数采用递归的方式实现当月份小于等于2时返回1否则返回前两个月的兔子总数之和。 5. 最后输出每个月的兔子总数。
注意代码中还提供了一个使用数组实现的Fib函数但被注释掉了。这个函数的思路是创建一个长度为102400的数组用于存储斐波那契数列的前102400项。然后通过循环计算第n项的值并返回结果。这种方法的时间复杂度为O(n)空间复杂度为O(1)。
源代码
package Question2;import java.util.Scanner;public class Tutu {public static void main(String[] args) {Scanner scannernew Scanner(System.in);System.out.print(请输入);int nscanner.nextInt();for(int i1;in;i){System.out.println(第i个月兔子总数为Fib(i)对);}}//递归public static int Fib(int n){if(n2){return 1;}else{return Fib(n-1)Fib(n-2);}}//数组
// public static int Fib(int n)
// {
// int[] arrynew int[102400];
// arry[1]1;
// arry[2]1;
// if(n2)
// {
// return arry[1];
// }
// else
// {
// for (int i 3; i n; i) {
// arry[i] arry[i - 1] arry[i - 2];
// }
// return arry[n];
// }
// }}运行结果