2017-06-19 90 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