2014-08-31 29 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的矢量化功能的技能。

相關問題