【问题标题】:How to code the program in the Shell Script [closed]如何在 Shell 脚本中编写程序 [关闭]
【发布时间】:2020-10-28 19:03:27
【问题描述】:

如何在Shell Script中编写程序来计算斐波那契数列与键盘输入的上限之和?输入例如:“输入斐波那契数列的极限?10”。结果:0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 = 88

#!/bin/bash
if [ $# -eq 1 ]
then 
    Num=$1
else
    echo -n "Enter the limits of the Fibonacci sequence : "
    read Num
fi

a=0
b=1

echo "Result : "
for (( i=0;i<=Num;i++ ))
do
    echo -n “$a + “
    n=$((a+b))
    a=$b
    b=$n
done
echo

有人知道如何获得结果吗? 我的预期输出是:

Enter the limits of the Fibonacci sequence : 10
Result : 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 = 88

我一直在尝试

【问题讨论】:

  • 不是"。使用的精确字符很重要。
  • 除此之外 - 在问题中包含您的 实际 结果,而不仅仅是您想要的结果(除非收集输入是问题的一部分,否则最好只硬编码您的值所以每个人都会得到相同的行为,而不是猜测您在测试运行中使用的 Num 的值)。
  • 您已经知道如何将数字相加 (n=$((a+b))),那么为什么不将每个数字相加,然后在末尾添加 echo 呢?
  • 我还没有找到斐波那契求和的模式,你能帮帮我吗?

标签: linux bash shell while-loop bin


【解决方案1】:
$ cat fib
#!/bin/bash
Num=${1-5}
a=0
b=1
unset s

printf "Result: "
for (( i=0; i<Num; i++ )); do
    printf "${s:+ + }$a"
    s=$(($s + $a))
    n=$((a+$b))
    a=$b
    b=$n
done
echo " = $s"
$ ./fib 5
Result: 0 + 1 + 1 + 2 + 3 = 7
$ ./fib 10
Result: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 = 88

【讨论】:

    【解决方案2】:

    这行得通:

    a=1; 
    b=0; 
    sum=$a; 
    for ((i=1;i<10-1;++i)); do 
        ((tmp=b)); 
        ((b=a)); 
        ((a+=tmp)); 
        ((sum+=a)); 
    done; 
    echo $sum;
    

    我的终端输出:

    [ichramm@hypernova][Wed, 28 Oct 16:19:24][~]
    $ a=1; b=0; sum=$a; for ((i=1;i<10-1;++i)); do ((tmp=b)); ((b=a)); ((a+=tmp)); ((sum+=a)); done; echo $sum;
    88
    

    【讨论】:

    • 我的预期输出是:输入斐波那契数列的极限?然后我输入 10,结果是 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 = 88。顺便说一句,谢谢你的实验。你很酷!
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 2014-02-11
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多