我在bash中编写它有一个问题...我知道它是如何在C++中起作用的,但是我在bash中执行它时遇到了麻烦。这是我得到的:bash中的递归求和函数
sum()
{
let minusOne=$1-1
let result=sum $minusOne +$1
}
我在bash中编写它有一个问题...我知道它是如何在C++中起作用的,但是我在bash中执行它时遇到了麻烦。这是我得到的:bash中的递归求和函数
sum()
{
let minusOne=$1-1
let result=sum $minusOne +$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
}
非常感谢!一个问题,但是,我怎么得到这个值的变量?如let var = $(($ 1 + $(sum $ minusEna))??它给出一个错误(预期的操作数)... – Kajzer 2012-03-15 16:24:22
你会说'theSum = $(sum 5)' – 2012-03-15 17:01:06
这里是给你作为参数提供的数字之和的功能。下面打印“10”:
#!/bin/bash
sum() {
local total=0
for number in "[email protected]"; do
((total += number))
done
echo $total
}
sum 1 2 3 4
你可以发布'sum'的'C++'版本吗? – kev 2012-03-15 14:49:44