关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)

数组在作为函数的返回值,一个很经典的例子就是获取斐波那契数列的前N项

代码思路:

设计思路

输入: 输入一个整数 n,表示要生成斐波那契数列的长度。

输出: 输出一个长度为 n 的整数数组,其中每个元素为斐波那契数列的相应值。

算法:

  • 如果 n 小于等于0,则返回 null。
  • 创建一个长度为 n 的数组,初始化前两个元素为 1。
  • 从第三个元素开始,通过递归的方式填充后续的斐波那契数值。
  • 返回填充完的数组。

代码实现:

java 复制代码
public class TestArray {
    public static int[] fib(int n){
        if(n <= 0){
            return null;
        }
        int[] array = new int[n];
        array[0] = array[1] = 1;
        for (int i = 2; i < n; ++i) {
            array[i] = array[i-1] + array[i-2];
        }
        return array;
    }

    public static void main(String[] args) {
        int[] array =fib(10);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

1. fib 方法

java 复制代码
public static int[] fib(int n){
    if(n <= 0){
        return null;
    }
    int[] array = new int[n]; // 创建一个长度为n的整数数组
    array[0] = array[1] = 1; // 初始化数组的前两个元素为1
    for (int i = 2; i < n; ++i) {
        array[i] = array[i-1] + array[i-2]; // 后续元素是前两个元素之和
    }
    return array; // 返回包含斐波那契数列的数组
}

功能:
这个方法的主要功能是根据给定的 n 生成一个斐波那契数列,返回一个包含前 n 个斐波那契数的数组。

详细步骤:

输入检查: 如果 n <= 0,表示无效输入,因此返回 null。
数组初始化: 创建一个长度为 n 的整数数组 array,并初始化前两个元素 array[0] 和 array[1] 为 1(这两个是斐波那契数列的前两个数)。
循环生成斐波那契数列: 从 i = 2 开始,通过 array[i] = array[i-1] + array[i-2] 的递推关系生成后续的斐波那契数列值。
返回结果: 最后返回这个已经填充了斐波那契数列值的数组。

  1. main 方法
java 复制代码
public static void main(String[] args) {
    int[] array = fib(10); // 调用fib方法,获取斐波那契数列前10个数
    for (int i = 0; i < array.length; i++) {
        System.out.println(array[i]); // 打印每个斐波那契数
    }
}

功能:
在 main 方法中调用 fib(10) 来生成一个包含前 10 个斐波那契数的数组。
然后通过循环遍历该数组,并使用 System.out.println() 输出每个数值。

实现截图:

当 fib(10) 被调用时,数组将被填充为:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55

这些是斐波那契数列的前 10 个数字。

因此这段代码通过定义一个 fib 方法实现了斐波那契数列的生成,返回一个包含指定数量斐波那契数值的数组。通过一个简单的 for 循环生成后续数值,最终在 main 方法中打印输出该数组。

相关推荐
知来者逆30 分钟前
计算机视觉——速度与精度的完美结合的实时目标检测算法RF-DETR详解
图像处理·人工智能·深度学习·算法·目标检测·计算机视觉·rf-detr
阿让啊35 分钟前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
এ᭄画画的北北36 分钟前
力扣-160.相交链表
算法·leetcode·链表
爱研究的小陈2 小时前
Day 3:数学基础回顾——线性代数与概率论在AI中的核心作用
算法
渭雨轻尘_学习计算机ing2 小时前
二叉树的最大宽度计算
算法·面试
BB_CC_DD2 小时前
四. 以Annoy算法建树的方式聚类清洗图像数据集,一次建树,无限次聚类搜索,提升聚类搜索效率。(附完整代码)
深度学习·算法·聚类
梁下轻语的秋缘3 小时前
每日c/c++题 备战蓝桥杯 ([洛谷 P1226] 快速幂求模题解)
c++·算法·蓝桥杯
CODE_RabbitV4 小时前
【深度强化学习 DRL 快速实践】逆向强化学习算法 (IRL)
算法
mit6.8244 小时前
[贪心_7] 最优除法 | 跳跃游戏 II | 加油站
数据结构·算法·leetcode
keep intensify4 小时前
通讯录完善版本(详细讲解+源码)
c语言·开发语言·数据结构·算法