2016-09-25 7 views
-3

(10^2 + 10^3)の合計累積時間を解決する必要があるので、1100 + 1100 + 1100 ...(99回))=合計。私はほとんどの人がループを好きではないことを知っていますが、私はforループを使ってこれを解決する必要があります。ここで私はこれまで持っているものです...forループを使用して累積合計を得る

prob1 <- function(n){ 
total <- 1100 
for(i in 2:99) 
total[i] <- sum(i^2 + i^3) 
return(total) 
} 

これは私が何を得る

[1] 1100  12  36  80 150 252 392 576 810 1100 1452 1872 2366 2940 3600 
[16] 4352 5202 6156 7220 8400 9702 11132 12696 14400 16250 18252 20412 22736 25230 27900 
[31] 30752 33792 37026 40460 44100 47952 52022 56316 60840 65600 70602 75852 81356 87120 93150 
[46] 99452 106032 112896 120050 127500 135252 143312 151686 160380 169400 178752 188442 198476 208860 219600 
[61] 230702 242172 254016 266240 278850 291852 305252 319056 333270 347900 362952 378432 394346 410700 427500 
[76] 444752 462462 480636 499280 518400 538002 558092 578676 599760 621350 643452 666072 689216 712890 737100 
[91] 761852 787152 813006 839420 866400 893952 922082 950796 980100 

は、どのように私はそれが正しく追加し、ちょうど合計を返すために取得することができますか? 合計は108,900でなければなりません(私は信じています)

+0

**。**あなたがあなたのコードが求めているものを取得しています。希望の結果は何ですか?累積合計を得るために以前の条件を使用していないので、説明は毎回同じ数字を使用するように聞こえるだけです。 ** b。**なぜ 'for'ループの必要性? 'cumsum'と' Reduce'は素晴らしい機能です。 ** c。** 'for'ループを使用する場合は、適切なサイズのベクトルを事前に割り当てるか、パフォーマンスが悪くなります。 – alistaire

答えて

1

あなたはループの問題を少しだけ違って見ました。あなたのコードは、要素を合計[i]のベクトルに追加していました。代わりに、別の番号に番号を追加するためのイテレータにしたいだけです。最初の行で0に初期化しました。

total=0 
for (i in 1:99) { 
total<-total+(10^2 + 10^3) 
} 
total 

[1] 108900

1100*99 

[1] 108900

+1

ありがとう!それはうまくいきました...なぜ私はこれを含めるべきなのか説明できますか? –

+0

あなたは正しいです。それは必要ではありません。ループはそれを行います。混乱させて申し訳ありません。私は自分の投稿を編集します。 – akaDrHouse

+1

心配しなくても、理解したかっただけです。あなたの時間をありがとう、私は助けていただきありがとうございます! –