【问题标题】:Interpreting complicated nested loops解释复杂的嵌套循环
【发布时间】:2017-11-22 04:25:05
【问题描述】:

你会如何解释这个嵌套 for 循环的“else”部分?

我已经在底部进行了尝试,但是考虑到 a 已经定义,我正在努力弄清楚 else 部分的功能。 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)

我的解释:

仅在 a > b 时有效(如果不是:跳到“其他步骤”) 继续将a添加到b,只要它不超过b(在它之前停止最后一步) 在 c(a=1, b=2, c=3) 中说 e,我们会做 (b - a - c - d) 或者技术上是 b-1,然后是 (b-1)-2,然后是 (b-3) )-3 b=be

只有当 a

第一个 if/else 循环后的下一步:只需在第一个循环后用 a,b,d,c 的最新值重新计算 c 对最终向量的所有元素求和

【问题讨论】:

    标签: r for-loop nested


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多