我在bash中编写它有问题...我知道它在C ++中是如何工作的,但我在bash中实现它有困难。这就是我得到的:
sum()
{
let minusOne=$1-1
let result=sum $minusOne +$1
}
答案 0 :(得分:1)
您需要退出条件。在bash中,$((...))
是算术扩展,$(...)
是命令替换(参见man page)。
sum() {
if (( $1 == 1 )); then
echo 1
return
fi
local minusOne=$(( $1 - 1 ))
echo $(( $1 + $(sum $minusOne) ))
}
写一个求和函数的非递归方法:
sum() {
set -- $(seq 1 $1)
local IFS=+
echo "$*" | bc
}
答案 1 :(得分:0)
这是一个函数,它将为您提供作为参数提供的数字总和。以下打印“10”:
#!/bin/bash
sum() {
local total=0
for number in "$@"; do
(( total += number ))
done
echo $total
}
sum 1 2 3 4