0 / 0 / 1
Регистрация: 04.05.2011
Сообщений: 4
1

Рекурсивная функция для нахождения числа сочетаний

04.05.2011, 17:24. Показов 10364. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать рекурсивную функцию Combin1(N,K) целого типа, находящую C(N,K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения:
C(N, 0) = C(N,N) = 1,
C(N,K) = C(N–1,K) + C(N-1,K–1) при 0<K<N.
Параметры функции— целые числа; N>0, 0<=K<=N. Дано число N и пять различных значений K. Вывести числа C(N, K) вместе с количеством рекурсивных вызовов функции Combin1, потребовавшихся для их нахождения.

Написал программу:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses    crt;
var     c,n,k:longint;
 
function Combin1 (n,k:longint):longint;
begin
        if k=n then c:= 1
        else c:= Combin1 (n-1,k) + Combin1 (n-1,k-1);
        Combin1:=c;
end;
 
begin
        clrscr;
        write ('Введите натуральное число: '); read (n);
        repeat
          write ('Введите натуральное число не больше ',n,' (0-выход): '); readln (k);
          if (k>0) and (k<n) then writeln ('Число сочетаний из ',n,' по ',k,': ',Combin1(n,k));
        until k=0;
        readkey;
end.
Запускаю её, ввожу данные - получается ошибка переполнения стека(вроде бы?):
Код
Process is terminated due to StackOverflowException
Как тогда описать функцию?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2011, 17:24
Ответы с готовыми решениями:

Рекурсивная функция для нахождения НОД
Необходимо описать рекурсивную функцию GOD(A,B) целого типа, находящую наибольший общий делитель...

Рекурсивная функция нахождения суммы цифр числа
Привет всем.с рекурсией у меня туго.помогите пожалуйста решить вот эти две задачи. ТОЛЬКО...

Рекурсивная функция нахождения суммы цифр натурального числа
Написать рекурсивную функцию нахождения суммы цифр любого натурального числа.

Рекурсивная функция для вычисления N числа Фибоначчи.
Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле:...

2
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
04.05.2011, 20:31 2
Pascal
1
2
3
4
5
6
function Combin1 (n,k:longint):longint;
begin
        if (k=0)or(k=n) then c:= 1//вам же дано условие C(N, 0) = C(N,N) = 1
        else c:= Combin1 (n-1,k) + Combin1 (n-1,k-1);
        Combin1:=c;
end;
1
0 / 0 / 1
Регистрация: 04.05.2011
Сообщений: 4
04.05.2011, 20:45  [ТС] 3
Да, упустил это, спасибо.
Вот готовая программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses    crt;
var     c,n,k,z:longint;
 
function Combin1 (n,k:longint):longint;
begin
        if (k=0) or (k=n) then c:= 1
        else
          c:= Combin1 (n-1,k) + Combin1 (n-1,k-1);
        Combin1:=c;
        z:=z+1;
end;
 
begin
        clrscr;
        write ('Введите натуральное число: '); read (n);
        repeat
          z:=0;
          write (#10,'Введите натуральное число не больше ',n,' (0-выход): '); readln (k);
          if (k>0) and (k<n) then writeln ('Число сочетаний из ',n,' по ',k,': ',Combin1(n,k),#10,'Количество вызовов функции: ',z);
        until k=0;
        readkey;
end.
Добавил счетчик вызовов функций (z).
0
04.05.2011, 20:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2011, 20:45
Помогаю со студенческими работами здесь

Рекурсивная функция для расчета степени вещественного числа
Написать рекурсивную функцию для расчета степени N вещественного числа A (n- натуральное число)......

Рекурсивная функция нахождения максимального элемента данной последовательности
Ребзя, выручайте) Разработайте рекурсивную функцию нахождения максимального элемента данной...

Рекурсивная функция нахождения суммы цифр числа
Помогите, пожалуйста, написать рекурсивную функцию нахождения суммы цифр числа прототип функции...

Рекурсивная функция для нахождения биномиальных коэффициентов.
Написать рекурсивную функцию для нахождения биномиальных коэффициентов.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru