bash中的几何序列

时间:2017-07-05 16:14:52

标签: bash

您好我正在处理bash几何序列,这是我的代码。我正在做什么?

function geometric {
    a1=$1;
    q=$2;
    n=$3;

    echo "$a1";
    for ((i=1; i<n+1; i++))
    do
        echo $((a1*(q^(i-1))))
    done
}

1 个答案:

答案 0 :(得分:0)

bash中的取幂运算符为**而不是^。后者实际上是按位或运算符。因此,简单的解决方案是(在删除最初多余的echo之后)将表达式echo修改为:

 echo $((a1*(q**(i-1))))

但是,你可能想要考虑使其更具可读性,避免使用复杂的表达式,如下所示:

function geometric {
    ((val = $1))
    ((mult = $2))
    ((count = $3))

    while [[ ${count} -gt 0 ]] ; do
        echo ${val}
        ((val *= mult))
        ((count -= 1))
    done
}