linux - 使用 Bash 迭代计算斐波那契数
问题描述
是否可以编写一个脚本来计算第 n 个斐波那契数 - 迭代。我做了递归(如下所示),但可以迭代地找到解决方案。请帮忙。
#!/bin/bash
fib()
{
if [ $1 -le 0 ]
then
echo 0
return 0
fi
if [ $1 -le 2 ]
then
echo 1
else
a=$(fib $[$1-1])
b=$(fib $[$1-2])
echo $(($a+$b))
fi
}
解决方案
这是迭代方法:
function fib() {
local n=$1
local x=0
local prev1=0
local prev2=0
local cur=0
for (( x = 1 ; x <= n ; x++ ))
do
if [[ $x == 1 || $x == 2 ]] ; then
prev1=1
prev2=1
cur=1
continue
fi
cur=$(( prev1 + prev2 ))
prev2=$prev1
prev1=$cur
done
echo $cur
}
推荐阅读
- list - 如何在 Java 8 中将对象列表转换为地图?
- reporting-services - 显示单列到多列(n 次)
- android-databinding - 使用 ViewModel 和 DataBinding 更新 UI
- php - 如何删除除 Codeigniter 中的某些文件之外的所有文件
- r - dplyr 字符串匹配和替换基于 R 中的查找表
- mysql - 从 Mysql 中获取行并使用 Django 将其显示在 html 中
- c# - T-SQL ... 表示法
- python - python - pandas,如何减少具有相同值的行数据框?
- python - JSONEncoder subclassing went wrong
- laravel - 这段代码在 RedirectIfAuthenticated.php 中是什么意思?