2017-05-06 9 views
1

分数を合計する関数を書きたいと思います。 xは分子であり、nの最大値はxです。私はx/cのすべての端数を合計し、c = x+1の場合はc == yの場合は停止したいと思います。例えば分数の合計の関数R

x = 2y = 5

2/1 + 2/2 + 2/3 + 2/4 + 2/5 = 4.566667 

は、私はwhileループを試してみましたが、私はそれは似ても似つかないと思う場合x = 1y = 4

1/1 + 1/2 + 1/3 + 1/4 = 2.083333 

あるいは、もし:

score <- function(x, y){ 
    while (c < y){ 
    c <- x/1 
    c <- x/c+1 
    } 
} 
+0

空想取得し、留分として答えること: '<スコア - 関数(x、y)は{MASS ::画分(合計(X/seq.int(Y)))}' – alistaire

答えて

2

編集:できるだけRのループを避けてください。

f <- function(x,y) x * sum(1/(1:y)) 
+0

これは誤解を招きます。あなたはループを使うことができます。単純な手続きでは避けるべきです。 – Val

+0

初心者のための経験則は、Rでループを使用しないことです。大きなデータセットを反復処理するときは、特にループを避ける必要があります。しかし、私はループが時々Okかもしれないことに同意します。 – Tbar

+0

もう一度やり直してください。あなたの仕事によっては、ループを使わなければならないかもしれません。どちらにせよ、あなたの答えのステートメントは間違っています – Val