題目要求:
用ruby寫一個程序:要求輸出一個從1到n的字符串,其中遇到能被3整除的數(shù)字時,用“Fizz”代替該數(shù)字;遇到能被5整除的數(shù)字時,用“Buzz”來代替;遇到既能被3整除又能被5整除的數(shù)字時,用“FizzBuzz”來代替,如下圖所示。最后要求返回一個數(shù)組。

示例圖
分析:
題目要求非常簡單,邏輯上也很直觀,依次判斷1-n之間的每個數(shù)字是否能否被3或者5整除,從而確定其是否需要被其他字符替代,把處理之后的字符放在一個數(shù)組中;主要是會涉及循環(huán)語句和條件判斷語句,還有數(shù)組的創(chuàng)建和添加元素。
預(yù)備知識:
1.循環(huán)語句
- while 語句
while i < n do
code
end
其中do也可以換成 : ,也可以省略不寫;
- for語句
for i in 1..n
2.條件判斷語句
- if...else 語句
if 條件 then
code
elsif 條件 then
code
else
code
end
需要注意的是,在Ruby中使用elsif,而不是else if ;并且通常情況下我們省略then。
3.數(shù)組的創(chuàng)建和添加元素
- 數(shù)組的創(chuàng)建
string = Array.new
- 添加元素
array << obj 把給定的對象添加到數(shù)組的末尾
在Ruby中,可以通過在變量或者常量前面加 # 字符,來訪問任何變量或者常量的值。
具體代碼:
# @param {Integer} n
# @return {String[]}
def fizz_buzz(n)
string = Array.new
i=0
while i < n do
i+=1
if i % 3 == 0 and i % 5==0
string << "FizzBuzz"
elsif i % 5 == 0
string << "Buzz"
elsif i % 3==0
string << "Fizz"
else
string << "#{i}"
end
end
string
end