2017-06-19 91 views
0

你會如何插入這個嵌套for循環的「else」部分?解釋複雜的嵌套循環

我已經在底部給出了我的嘗試,但我正在努力讓我的頭部考慮如何部分函數考慮到a已經定義。 y(1,2,3,4)的結果是16,所以通過我的計算,該向量在該步驟增加了6,因爲其他步驟不成立。

y=function(a,b,c,d) 
{ 
if(a>b){ 
while(b<d){ 
    b=b+a 
} 
for(e in c(a,c,d)){ 
b=b-e 
}} 
else{ 
for(a in 1:c){ 
    a=a+d 
}} 
if(b>c){ 
c= c*d + a-b} 
return(sum(a,b,c,d)) 
} 

y(1,2,3,4) 

我的解釋:

如果只有有效> B(如果不是:跳到「其他步驟」) 不斷加入A到B,只要它不超過B(停止的最後一步在它做之前) 在c(a = 1,b = 2,c = 3)中說e,我們會做(b - a - c - d)或者技術上b - 1,然後(b - 1)然後(b-3)-3 b =是

只有一個< b檢查應用於 - 這是我不理解的部分????

第一的if/else循環後

下一步:只是重新計算使用的最新值,b和d,C C從第一循環結束後 總和所有最終向量的元素

回答

1

這是出現(1,2,3,4)

# First check if a > b 
# a = 1, b = 2 do nothing 
# 
# else if a < b then run for loop 
# for(a in 1:c) 
# first run through 
#  a = 1 
#  a = 1 + 4 
#  a = 5 
# second run through 
#  a = 2 (Note a has been overwritten as to by for loop iteration) 
#  a = 2 + 4 
#  a = 6 
# third and final run through 
#  a = 3 (Note a has again been overwritten by for loop iteration) 
#  a = 3 + 4 
#  a = 7 
# 
# After for loop completes check if b > c 
# b = 2, c = 3 do nothing 
# 
# return statement 
# sum all values 
# a = 7, b = 2, c = 3, d = 4 
# 7 + 2 + 3 + 4 = 16 
# return 16