Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Grey5
2 / 2 / 0
Регистрация: 11.03.2010
Сообщений: 178
1

Рассчитать факториал с помощью рекурсивной функции на спуске

08.12.2013, 23:50. Просмотров 544. Ответов 3
Метки нет (Все метки)

Нужно расчитать факториал с помощью рекурсивной функции на спуске. Функция должна принимать один аргумент.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 23:50
Ответы с готовыми решениями:

Найти факториал с помощью вещественной переменной
Написать код программы на С#. Дано целое число N (> 0). Найти произведение N!...

Перевод рекурсивной функции с JavaScript
Уважаемые форумчане, встретил в книге листинг рекурсивной функции захотел...

Обнуляется счетчик в цикле foreach рекурсивной функции
Вызываю функцию: Передаю значение count = 0. private void...

С помощью рекурсивной функции рассчитать сумму всех двохзначних чисел
С помощью рекурсивной функции рассчитать сумму всех двохзначних чисел

Вычислить с использованием рекурсивной функции факториал
Вычислить с использованием рекурсивной функции факториала S = 1! + 4! + 7! +… +...

3
rattrapper
foo();
864 / 568 / 221
Регистрация: 03.07.2013
Сообщений: 1,547
Записей в блоге: 2
08.12.2013, 23:57 2
C#
1
2
3
4
5
6
static int fact(int i)
{
    if (i == 2) return 2;
    else if (i < 2) return 1;
    else return i * fact(i - 1);
}
0
Psilon
Master of Orion
Эксперт .NET
6000 / 4850 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
09.12.2013, 08:53 3
rattrapper, из вашего кода следует
а)
C#
1
2
3
4
5
if (a == 2)
return 2;
if (a == 1)
return 1;
...
при этом забываем, что факториал < 0 не определен

Добавлено через 1 минуту
rattrapper,
C#
1
2
3
4
5
6
7
8
9
10
static int Fact(int n)
{
    if (i < 0) 
       throw new ArgumentException("n");
    if (n == 0)
       return 1;
    if (n <= 2) 
       return n;
    return n * fact(n - 1);
}
Добавлено через 1 минуту
rattrapper, либо как вариант сделать uint (хотя тут больше подойдет byte, факториал больше 255 вряд ли получится посчитать). И да, возвращаемое значение в свою очередь лучше long, или даже double
1
rattrapper
foo();
864 / 568 / 221
Регистрация: 03.07.2013
Сообщений: 1,547
Записей в блоге: 2
09.12.2013, 17:52 4
Цитата Сообщение от Psilon Посмотреть сообщение
при этом забываем, что факториал < 0
помнил, но очень уж лень было выбрасывать исключение
Цитата Сообщение от Psilon Посмотреть сообщение
либо как вариант сделать uint (хотя тут больше подойдет byte, факториал больше 255 вряд ли получится посчитать). И да, возвращаемое значение в свою очередь лучше long, или даже double
а вот об этом сам не подумал, очень толковая идея
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 17:52

Вычислить факториал заданного числа при помощи рекурсивной функции
Разбирался с рекурсией и вот вдруг возникла проблема. При компиляции выдает...

С помощью рекурсивной функции вычислить сумму
Дано натуральное n, действительные a1,a2,...,an.С помощью рекурсивной функции...

Поиск минимума с помощью рекурсивной функции
#include&lt;iostream&gt; #include &lt;time.h&gt; using namespace std; int mina(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru