2012-03-15 23 views
1

私はbashで書いているのに問題があります... C++での動作は分かりますが、bashで実装するのに問題があります。ここに私が持っているものがあります:bashの再帰的和関数

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

} 
+0

'' sum'の 'C++'バージョンを投稿できますか? – kev

答えて

1

終了条件が必要です。 bashでは、$((...))は算術拡張であり、$(...)はコマンド置換です(man pageを参照)。 sum関数を記述する

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 
} 
+0

ありがとうございます! 1つの質問ですが、この値を変数にどうやって取得するのですか?あなたは 'theSum = $(sum 5)'と言っていましたが、それはエラーです(オペランドが期待されています)... – Kajzer

+0

あなたは 'theSum = $(sum $ minusEna) –

0

はあなたに引数として提供数の合計を与える機能です。以下は "10"を出力します。

#!/bin/bash 

sum() { 
    local total=0 
    for number in "[email protected]"; do 
     ((total += number)) 
    done 

    echo $total 
} 

sum 1 2 3 4