Bash 计算在求和和和减法之间交替的序列
我试图在bash中创建一个分形树,前提是用户输入N,其中N是分支数 我需要编写以下序列,将N作为输入: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-
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$(公元前