bash中的递归和函数

时间:2012-03-15 14:44:58

标签: bash recursion

我在bash中编写它有问题...我知道它在C ++中是如何工作的,但我在bash中实现它有困难。这就是我得到的:

sum() 
{
    let minusOne=$1-1
    let result=sum $minusOne +$1

}

2 个答案:

答案 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