2015-01-21 3 views
-5

У меня есть номер 10, я хочу, чтобы умножить каждое число от минус число от 1 это что-то вроде:Как умножить каждое число на минус число на 1 в C#?

10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Тогда результат. Как справиться с этим в C#?

+2

Вы хотите, чтобы вычислить [factorial] (http://stackoverflow.com/questions/16583665/for-loop-to-calculate-factorials). –

+1

'while (mul! = 0) result * = mul -' или такой ... –

+0

Это называется [Факториал] (http://en.wikipedia.org/wiki/Factorial) в Math. И этот Google [поиск] (https://www.google.com.tr/search?q=c%23+calculate+factorial) возвращает результат 134.000. Проверьте это. –

ответ

3

Это простая функция вычисления факториала. Вы можете использовать рекурсивный метод:

unsigned int Factorial(unsigned int val) 
{ 
    return (1 == val)? 1 : Factorial(val - 1); 
} 

Или итерационный метод:

unsigned int Factorial(unsigned int val) 
{ 
    unsigned int result = val; 
    while(1 < --val) 
    { 
     result *= val; 
    } 
    return result; 
} 

Обратите внимание, что он не будет работать при больших входных значений, так как Teh факторный быстро переполняться целое.

+1

Зачем возвращать результат -1'? –

+0

@PeterSchneider Потому что я не могу напечатать, прежде чем у меня был кофе. :-) Спасибо что подметил это. Починил это. –

+0

@TimSchmelter - Факториал (50) возвращается -3258495067890909184 – fubo

-1

попробовать это -

 var res = 1; 
     for (int num = 10; num > 0; num--) 
      res += res * (num - 1); 

     MessageBox.Show(res.ToString()); 
+0

Хотя то, что сказал ОП, было немного неясным, я бы предположил, что пример показывает, что он хочет, а именно вычислить факториал. В этом случае ваш один лайнер - это только первый шаг. –

+0

OP четко прояснил, как вычислить [факториалы] (http://en.wikipedia.org/wiki/Factorial). Образец говорит все. –

+0

Спасибо, ребята, за исправление меня .. Обновлен ответ. – Rohit