斐波那契数列

斐波那契数列
本文介绍了斐波那契数列的基本概念及其在现代科学领域的应用,并提供了使用Java和Shell脚本实现斐波那契数列的三种不同方法。

最近无意接触到 斐波那契数列。百科了一下~~~

斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。


Java版

//main方法

public static void main(String[] args)
{        
        ArrayList<Integer> result = new ArrayList<Integer>();
        result.add(1);
        result.add(1);
        addNewValue(result);
        System.out.println(result);
        System.out.println(addNum(5));

        System.out.println(fibonacci(5));
}

//1

public static void addNewValue(ArrayList<Integer> array)
{
      if (array.size() <= 5)
      {
            array.add(array.get(array.size() - 1) + array.get(array.size() - 2));
            addNewValue(array);
      }
}


// 2

public static long addNum(int num)
{
      if (num <= 1)
      {
            return 1;
      }
      else
      {
            return addNum(num - 1) + addNum(num - 2);
      }
}

//3

public static BigInteger fibonacci(int num)
{
      if (num == 0)
      {
            return new BigInteger("0");
      }
      else if (num == 1)
      {
            return new BigInteger("1");
      }
      else
      {
            BigInteger b0 = BigInteger.ZERO;
            BigInteger b1 = BigInteger.ONE;
            BigInteger fn = BigInteger.ZERO;
            for (int i = 1; i <= num; i++)
            {
                fn = b0.add(b1);
                b0 = b1;
                b1 = fn;
            }
            return fn;
      }
}


Shell版

#1
#!/bin/bash

echo "Fibonacci script"

echo "Press a number here..."
read number

if [ $number -le 0 ]
then
   echo "You have something wrong.The number must be great then 0."
   exit 1
fi

for((i=0;i<$number;i++))
do
  if(($i-2>=0))
    then
      ((array[$i]=${array[$i-1]}+${array[$i-2]}))
    else
      ((array[$i]=$i))
  fi
  echo array[$i]=${array[$i]}
done
sum=0
for((j=0;j<10;j++))
do
  sum=$(($sum+${array[$j]}))
done

echo "$sum"

#2
#!/bin/bash
#Fibonacci Sequence

echo "Press a number here..."
read number

if [ $number -le 0 ]
then
   echo "You have something wrong.The number must be great then 0."
   exit 1
fi
echo "Well, you wanna print between 1 and $number, and count them."

fibonacci(){
  arg1=0
  arg2=1
  for((i=1;i<=$number;i++))
  do
    ((arg3=$arg1+$arg2))

    echo "Seq: $arg1+$arg2=$(($arg1+$arg2))"

    sum=$(($sum+$arg3))
    arg1=$arg2
    arg2=$arg3
  done

  echo "$sum"
}
fibonacci
本课设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像析与模式类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问。 在色彩特征析方面,叶片影像的颜色布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成等),能够提取具有判别力的色彩特征,从而为不同病害类别的区提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与类判断。采用的类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问的能力。总体而言,该叶片病害检测系统涵盖了图像析、特征融合、类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值