Головна

Unsigned Factorial (unsigned n)

  1. Unsigned F, n;

{

unsigned i = 0; //Поточне значенняi

unsigned F = 1; //Поточне значенняi!

while (i

{

++ I; //i = i + 1

F * = i; //F = F * i - поточний значенняi!

}

return F; //Повертаємо значення n!

}

Недоліком цієї реализации є ті, что с помощью цієї Функції можна обчісліті n!только для nвід 0до 12. значення 13!Вже Вихід за верхню межу діапазону значень типу unsignedи функція начинает повертаті невірні значення факторіала. Для Запобігання Отримання невірніх значень факториалов модіфікуємо функцію Наступний чином:

Unsigned Factorial (unsigned n)

{

unsigned i = 0; //Поточне значенняi

unsigned F = 1; //Поточне значенняi!

while (i

{

++ I; //i = i + 1

if (0xffffffffu / i - Максимальне значення типу unsigned

{

F = 0;

Break;

}

F * = i; //F = F * i - поточний значенняi!

}

return F; //Повертаємо значення n!

}

Додана перевірка віявляє сітуацію, коли множення попередня значення факторіала на таке значення iпрізведе до виходів отриманий значення твори за верхню межу діапазону значень типу unsigned. У цьом випадка значення факторіала прісвоюється значення 0(Факторіал будь-которого числа всегда более 0), и с помощью інструкції breakвиконан циклу перерівається. У цьом випадка функція поверніть значення 0.

При такій реализации функцію Factorialв Програмі можна використовуват, например, так:

рекурентні обчислення | Unsigned F, n;


Матеріал в Цій Книзі:

Return 0; | Форматування Введення-Виведення с помощью маніпуляторів. | Ідеї ??структурного програмування | Умовна інструкція (if) | Слово else відносіться до найближче зверху слову if, что находится в тому ж блоці інструкцій, но галі не пов'язаного ні з Яким іншім словом else. | Інструкція множини Вибори (switch) | Цикл з передумови (while) | Цикл з умів поста (do while) | Ітераційній цикл (for) | інструкції переходу |

© 2016-2022  um.co.ua - учбові матеріали та реферати