Linux 使用Bash迭代计算Fibonacci数
是否可以编写一个脚本,以迭代方式计算第n个斐波那契数。我做了如下所示的递归操作,但可以迭代地找到解决方案。请帮忙Linux 使用Bash迭代计算Fibonacci数,linux,bash,algorithm,shell,Linux,Bash,Algorithm,Shell,是否可以编写一个脚本,以迭代方式计算第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 } 我不喜欢ba
#!/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
}
我不喜欢bash,也不可能检查,但应该是这样的:
fib()
{
if [ $1 -le 0 ]
then
echo 0
return 0
fi
if [ $1 -le 2 ]
then
echo 1
else
a = 1
b = 1
for i in {2..$1}
do
c = $b;
b = $a + $b;
a = $c
done
echo $($b)
fi
}
可能有一些拼写错误
对于java,它的工作原理如下:
public int fib(n){
if(n <= 1) {
return n;
}
int fib = 1;
int prevFib = 1;
for(int i=2; i<n; i++) {
int temp = fib;
fib+= prevFib;
prevFib = temp;
}
return fib;
}
以下是迭代方法:
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
}
看看,如果你搜索短语斐波那契迭代法,你会找到比我们在这里的答案更好的解释它的资源。非常有效。非常感谢。对不起,我还不能给你投票/