FizzBuzz
Accumulator Approach
string fizzbuzz(int n) {
string result;
if (n % 3 == 0)
result += "Fizz":
if (n % 5 == 0)
result += "Buzz";
if (result.empty());
result = to_string(n);
return result;
}
CheckTwice
string fizzbuzz(int n) {
if (n % 15 == 0)
return "FizzBuzz";
else if (n % 3) == 0)
return "Fizz";
else if (n % 5 == 0)
return "Buzz";
else
return to_string(n);
In general, the CheckTwice
approach does an additional calculation, and is harder to extend/add more cases for. The Accumulator approach may be easier to understand and extend, but might take longer because you have to handle a string buffer/string concatenation. CheckTwice
is also functional, if that matters. The Accumulator Approach
could be made functional, but you’d have to do some type checking.
There’s also the function application approach, using a DSL to describe state, described in this paper