Bash 计算在求和和和减法之间交替的序列

Bash 计算在求和和和减法之间交替的序列,bash,math,logic,sequence,Bash,Math,Logic,Sequence,我试图在bash中创建一个分形树,前提是用户输入N,其中N是分支数 我需要编写以下序列,将N作为输入: N = 1; sequence = 50 N = 2; sequence = (50-16),(50+16) N = 3; sequence = (50-16-8),(50-16+8),(50+16-8),(50+16+8) N = 4; sequence = (50-16-8-4),(50-16-8+4),(50-16+8-4),(50-16+8+4),(50+16-8-4),(50+16-

我试图在bash中创建一个分形树,前提是用户输入N,其中N是分支数

我需要编写以下序列,将N作为输入:

N = 1; sequence = 50
N = 2; sequence = (50-16),(50+16)
N = 3; sequence = (50-16-8),(50-16+8),(50+16-8),(50+16+8)
N = 4; sequence = (50-16-8-4),(50-16-8+4),(50-16+8-4),(50-16+8+4),(50+16-8-4),(50+16-8+4),(50+16+8-4),(50+16+8+4)
N = 5; sequence = (50-16-8-4-2),(50-16-8-4+2),(50-16-8+4-2),(50-16-8+4+2),(50-16-8+4-2),(50-16-8+4+2),(50-16+8-4-2),(50-16+8-4+2),(50-16+8+4-2),(50-16+8+4+2),(50+16-8-4-2),(50+16-8-4+2),(50+16-8+4-2),(50+16-8+4+2),(50+16+8-4-2),(50+16+8-4+2),(50+16+8+4-2),(50+16+8+4+2)
我尝试使用for循环和基本数学将此序列作为数组来获取,但仍然无法获得准确的输出,以下是我迄今为止的代码:

#!/bin/bash

N=$1
declare -a sequence=()

temp1=50
temp2=50
for i in $(eval echo "{1..$N}");do
        for j in $(eval echo "{1..$N}");do
                temp1=$((temp1+2**(5-j)))
                temp2=$((temp2-2**(5-j)))
        done
                sequence+=($temp1)
                sequence+=($temp2)
                temp1=50
                temp2=50
done

echo ${sequence[@]}

我不知道如何在求和和和减法之间交替,我如何才能做到这一点

好吧,我不确定你在做什么哈哈,但我写了一个脚本,生成了你描述的输出

N=${1}

sequence=()
math_sequence=()

if [ $N -eq 1 ]
then
    math_sequence+=(50)
    sequence+=(50)
else
    for i in `seq 0 $(bc <<< "(2^(${N}-1)) - 1")`
    do
        X=50
        Y=32
        SIGNS=$(echo "obase=2;${i}" | bc | xargs printf "%0$((${N}-1))d\n" | sed 's/0/-/g; s/1/+/g')
        MATH="$X"
        VAL=$Y
        for (( i=0; i<${#SIGNS}; i++ )); do
            MATH+="${SIGNS:$i:1}"
            VAL=$(bc <<< "$VAL / 2")
            MATH+="${VAL}"
        done
        math_sequence+=( "(${MATH}), " )
        sequence+=( $(bc <<< "${MATH}") )
    done
fi
echo ${math_sequence[@]}
echo "----------------"
echo ${sequence[@]}
N=${1}
序列=()
数学顺序=()
如果[$N-等式1]
然后
数学顺序+=(50)
序列+=(50)
其他的
对于i,以'seq 0$(公元前