2011-12-15 3 views
2

Я нашел несколько итерационных решений в сети для определения факториала из n. Они выглядят примерно так:Итерационная факториальная реализация

int Factorial(int number) 
{ 
    int factorial = 1; 

    for (int i = 1; i <= number; i++) 
     factorial *= i; 

    return factorial; 
} 

ли не Factorial(0) = 1 и Factorial(1) = 1? Поэтому переменная счетчика внутри цикла for должна начинаться с , поскольку все ниже этого значения будет .

for (int i = 2; i <= number; i++) 
     factorial *= i; 

Есть ли какая-то причина, почему они использовали как стартовый номер для счетчика?

ответ

3

Не имеет значения - 1 или 2 будут работать, поскольку умножение на 1 ничего не делает. Однако большинство циклов начинаются с 0 или 1, и это следует за шаблоном. Кроме того, определение факториала часто указывается как произведение всех положительных целых чисел до n, поэтому это включает в себя один. По сути, 1, эстетически, является лучшей отправной точкой.

-2

Для итерационных функций в Python:

def iterative_factorial(n): 
    x = 1 
    for i in range(2,n+1): 
     x *= i 
    return x 
print(iterative_factorial(n)) 
+1

как это ответить на вопрос? – undefined

+0

(Несомненно о _not_ использовании/рекламе 'xrange'?) – greybeard

Смежные вопросы