Как я могу написать сценарий для суммирования квадратов целых чисел между двумя значениями n
и m
, что означает сумму всех i
², где i
изменяется от n
до m
?
Один из способов сделать это:
#! /bin/sh
n=$1
m=$2
# Reference: http://math.stackexchange.com/q/48080
sum=$(( (m * (m + 1) * (2 * m + 1) - (n - 1) * n * (2 * n - 1)) / 6 ))
echo $sum
Результат:
./sum 3 7
135
Достаточно базовый подход:
#!/bin/bash
sum=0 # initialise sum to zero
for i in $(seq $1 $2); do # iterate from n to m
sum=$((sum + i * i)) # add i² to sum
done
echo $sum # print sum
Позвонить:
./sum.sh n m
Есть и другие способы чтобы написать цикл, посмотрите здесь .
Используя Haskell, мы можем:
ghc -e 'sum [i*i | i <- [3..7]]'
или в формате сценария bash:
#!/bin/bash
ghc -e "sum [i*i | i <- [$1..$2]]"