我必须为命令行获取 2 个参数。第一个参数是起始数字,第二个参数是整数数。这是我到目前为止所拥有的。
#!/bin/bash
x=$1
y=$2
z=0
k=$((x%2))
while [ $z -lt $y ]; do
if [ $k == 0 ]; then
echo $k
fi
x=$((x+1))
echo $((x+1))
k=$((x%2))
z=$((z+1))
done
有没有人可以帮助我完成这个程序,我将不胜感激。
- 确定序列中的第一个和最后一个整数 m 和 n。
- 将 m 四舍五入到最接近的偶数以产生 m'
- 将 n 向下舍入到最接近的偶数产生 n' 现在计算 (m' + n')
- * (m' - n' + 2)/4
这个公式显然适用于我们有 m' = n' 的基本情况(当然两者都是偶数),减少到 (m' + m') * 2/4 = m'。证明:读者的练习。
举个例子:将 7 开始的范围内包含 15 个整数的偶数相加。
- m = 7
- , n = 7 + 15 - 1 = 21
- m' = 8
- n' = 20 (m' + n') * (m' - n' + 2)/4 = (8 + 20) *
- (20 - 8 + 2)/4 = 28 * 14/4 = 98
检查结果
$ echo $(( 8 + 10 + 12 + 14 + 16 + 18 + 20 ))
98
Bash代码:读者练习。
这是第一个剪辑:
#!/bin/bash
cur=$1
max=$(( $1 + $2 ))
sum=0
# increment to next even number if starting value is odd
(( cur % 2 == 1 )) && (( ++cur ))
(( max % 2 == 1 )) && (( --max ))
for (( x=cur; x <= max; x+= 2 )); do
(( sum += x ))
done
echo "$sum"
其工作原理如下:
# 4 = 4
$ ./sum-events 3 2
4
# 4 + 6 = 10
$ ./sum-events 4 2
10