0 / 0 / 0
Регистрация: 14.06.2010
Сообщений: 14
|
|
1 | |
Вычисление факториала рекурсивным методом22.11.2011, 21:02. Показов 11161. Ответов 7
Метки нет (Все метки)
помогите написать на лазарусе вычисление N! рекурсивным методом с использованием Edit,Label и Button. Заранее благодарна!
0
|
22.11.2011, 21:02 | |
Ответы с готовыми решениями:
7
Программирование циклических алгоритмов: вычисление факториала Вычисление значения функции рекурсивным методом Вычисление рекурсивным методом значение математической зависимости Вычислить рекурсивным методом |
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
22.11.2011, 23:12 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 14.06.2010
Сообщений: 14
|
|
24.11.2011, 10:10 [ТС] | 3 |
ОГРОМНЕЙШЕЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБИЩЕ)
Добавлено через 13 часов 31 минуту rangerx, всё работает отлично, а почему 17! уже отрицательные числа?
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
24.11.2011, 14:04 | 4 |
Потому что значение 17!(355687428096000) не вмещается в переменную типа integer. Уже при 13! происходит переполнение. Можете сделать дополнительную проверку на максимально допустимое значение передаваемое функции. Вообще, в реальных программах для вычисления факториала простые типы данных не используются, вместо них применяются т.н. "длинные числа". И естественно никакой рекурсии. Рекурсия полезная вещь, но не для этой задачи
1
|
0 / 0 / 0
Регистрация: 14.06.2010
Сообщений: 14
|
|
24.11.2011, 21:24 [ТС] | 5 |
rangerx, с этим я почти справилась)))нужно просто чтобы при вводе числа больше 16 он писал "нельзя посчитать" и нужна точно такая же прога токо с итерацией теперь чтобы сравнить какой способ быстрее и сколько памяти занимает))
Добавлено через 5 минут а ещё я поменяла integer на int64 и он почему то считатет все до 20!, 21и 22! не считает, 23!,24 считатет а 25 опять нет))) потом 31...33-39 ситате с 40-41 опять нет))
0
|
438 / 367 / 132
Регистрация: 09.09.2011
Сообщений: 1,334
|
||||||
24.11.2011, 23:15 | 6 | |||||
Используйте QWord вместо int64 - тогда минусов не будет.
максимальное положительное число для int64 - 9223372036854775807 для QWord - 18446744073709551615 (20 разрядов) 25! = 15511210043330985984000000 (26 разрядов) соответственно максимальное значение которое влезет в QWord - 20! = 2432902008176640000, всё что больше -переполнение. если нужно больше, то нужно реализовывать "длинную" арифметику, либо использовать дополнительные библиотеки. Добавлено через 11 минут Итеративный вариант очевидно можно запрограммировать так:
1
|
0 / 0 / 0
Регистрация: 14.06.2010
Сообщений: 14
|
|
25.11.2011, 10:00 [ТС] | 7 |
чё то ничего не получается(((он у меня то ошибки выдаёт то вообще закрывается и всё
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
26.11.2011, 23:25 | 8 | |||||
1
|
26.11.2011, 23:25 | |
26.11.2011, 23:25 | |
Помогаю со студенческими работами здесь
8
Решение рекурсивным методом Факториал рекурсивным методом Вычисление степени числа рекурсивным вызовом Среднее арифметическое рекурсивным методом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |