2014-08-31 27 views
2

我听说这是一个常见的面试问题,任何想法是什么在这里,谢谢。为什么R中的“Fizz Buzz”测试不成功?

for(i in 1:100){ 
    if(i%15==0){ 
    print('fizzbuzz') 
    } else 
     if (i%3==0){ 
     print("fizz") 
     } else 
     if (i%5==0) { 
      print("buzz") 
     } else 
      (print(i)) 
     } 
     } 
+0

请问您能分享什么是您认为不正确的错误消息或输出?谢谢 – 2014-08-31 20:04:07

+0

'%'是什么?你的意思是'%%'? – 2014-08-31 20:18:01

+0

甚至连第一句话都没有问题...... – 2014-08-31 20:50:49

回答

4

我会放在不同的地方花括号,你需要更正操作 - %%代替%

for(i in 1:100) { 
    if(i%%15==0){ 
     print('fizzbuzz') 
    } else if (i%%3==0){ 
     print("fizz") 
    } else if (i%%5==0) { 
     print("buzz") 
    } else { 
     print(i) 
    } 
} 

但其基本思路是合理的:首先获得特殊的“fizzbuzz”案的出路,然后对付剩下的(不含)的情况。

这里是前16项结果:

[email protected]:~$ r /tmp/fizzbuzz.R | head -16 
[1] 1 
[1] 2 
[1] "fizz" 
[1] 4 
[1] "buzz" 
[1] "fizz" 
[1] 7 
[1] 8 
[1] "fizz" 
[1] "buzz" 
[1] 11 
[1] "fizz" 
[1] 13 
[1] 14 
[1] "fizzbuzz" 
[1] 16 
[email protected]:~$ 
2

我只是做R FizzBuzz check on myself

f = seq(3,100,3) 
b = seq(5,100,5) 
fb = f[f %in% b] 
f = f[!f %in% fb] 
b = b[!b %in% fb] 
x = as.character(1:100) 
x[f] = "Fizz" 
x[b] = "Buzz" 
x[fb] = "FizzBuzz" 
cat(x, sep = "\n") 

如果你不明白这里的任何功能,你应该阅读说明书。

您的for循环解决方案可能不是R开发面试中的最佳选择。它可能被解释为缺乏使用R的矢量化功能的技能。

相关问题