私はRの宣言型プログラミングのパラダイムを実験しています。nからmまでの整数列を合計する関数を定義しました。私はsum()
機能を使用すると期待された結果を返します:再帰R関数で "+"が失敗するところで "Sum()"が成功するのはなぜですか?
> sumRange <- function(n, m) if (n <= m) return(sum(n, sumRange((n+1), m)))
> sumRange(1, 10)
[1] 55
をしかし、私は関数がnumeric(0)
を返し+
演算子を使用する場合:
> sumRange <- function(n, m) if (n <= m) return(n + sumRange((n+1), m))
> sumRange(1, 10)
numeric(0)
をなぜオペレータ+
は、この再帰関数では動作しませんか?関数を書き直す方法はありますか?
+1ベースケース。 R関数は、返り値が利用できない場合、 'NULL'オブジェクトを返すように見えます。だから、よく定義されているかもしれませんか? – Suren
@Headpoint単語の選択。 Rがデフォルトで返すものにかかわらず、OPは基本ケースを決して決して決してしなかったので、再帰の重要な部分は最も確かに定義されていません。 Rでコーディングするときにこの動作に頼るべきではありません –