你如何插入这个嵌套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)
我的解释:
仅在&gt;时有效b(如果不是:跳到“其他步骤”) 继续添加a到b,只要它不超过b(在它之前停止最后一步) 在c中说e(a = 1,b = 2,c = 3),我们会做(b - a - c - d)或技术上b-1,然后是(b-1)-2,然后是(b-3) )-3 b =是
仅当&lt; b它适用 - 这是我不理解的部分????
第一个if / else循环之后的下一步:只需从第一个循环后的a,b,d,c的最新值重新计算c 求和最终向量的所有元素
答案 0 :(得分:1)
当您拨打y(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