Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
litwisha
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 59
#1

Как это задание сделать через рекурсию? - C++

24.10.2012, 20:36. Просмотров 496. Ответов 5
Метки нет (Все метки)

У меня есть задание посчитать биномальный коэфициент простым способом и через рекурсию.Как это задание сделать через рекурсию?
Простым способом я сделал, нужно теперь это задание через рекурсию сделать.
Простой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<iostream>
#include<math.h>
using namespace std;
int n, k;
double rez,bin1,bin2;
int factorial(int a)
{   int fact=1;
    for(int i=1; i<=a;i++) fact*=i;
    return fact;
}
int main()
{
    
    cout<<"enter n and k"<<endl;
    cin>>n>>k;
    if(k>n) rez==0;
    if(k==0 || k==n) rez=1;
    if(k>0 && k<n)
    { 
        bin1= factorial(n-1)/(factorial(k)*factorial(n-1-k));
        bin2= factorial(n-1)/(factorial(k-1)*factorial(n-k));
        rez= bin1+bin2;
    }
    cout<<rez<<endl;
 
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 20:36     Как это задание сделать через рекурсию?
Посмотрите здесь:

Как сделать это задание? - C++
Определить номер первого из чисел sin x, sin(sin x), sin(sin(sin x)),.., меньшего по модулю 10^-3.

Хочу сравнить как это задание сделать разными способами. Спасибо - C++
Хочу сравнить как это задание сделать разными способами. Спасибо

Подскажите, как должно выглядеть это задание? - C++
Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным содержимым, а также декомпрессию...

Поясните с массивами, как делать это задание - C++
1. Дана последовательность натуральных чисел а1, a2, ..., а20. Определить, есть ли в последовательности хотя бы одна пара соседних нечетных...

Нужно сделать задание по c++! Через 3 часа нужно сдать! - C++
ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ ЗАДАНИЙ: Требования к выполнению задания №1: 1. Требуется решить систему линейных алгебраических...

Как это сделать? - C++
Как написать прогу, которая бы указывала количество слов в предложении, вводимое пользователем?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
24.10.2012, 21:11     Как это задание сделать через рекурсию? #2
C++
1
2
3
4
5
6
7
8
unsigned int func(unsigned int n, unsigned int k) {
    if (n < k)
        return 0;
    else if ((k == 0) || (n == 0))
        return 1;
    else
        return func(n-1, k) + func(n-1, k-1);
}
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.10.2012, 21:19     Как это задание сделать через рекурсию? #3
doctor_lecter, маленькая опечатка во втором случае.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
24.10.2012, 21:22     Как это задание сделать через рекурсию? #4
C++
1
2
3
4
int C(int n, int k)
{
   return (k == n || k == 0) ? 1 : (k < n ? C(n-1, k) + C(n-1, k-1) : 0);
}
litwisha
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 59
24.10.2012, 21:45  [ТС]     Как это задание сделать через рекурсию? #5
Цитата Сообщение от doctor_lecter Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
unsigned int func(unsigned int n, unsigned int k) {
    if (n < k)
        return 0;
    else if ((k == 0) || (n == 0))
        return 1;
    else
        return func(n-1, k) + func(n-1, k-1);
}
Я не совсем понимаю рекурсию, но в вашем коде я не вижу ни операции факториала, ни операции умножения или деления, которые нужны для вычисления биномиальных коэфициентов. Обьясните, пожалуйста, почему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 23:07     Как это задание сделать через рекурсию?
Еще ссылки по теме:

Как это сделать? - C++
Предположим, есть некоторый класс, например, TTrigonometricComplex и я хочу сделать нём функции, которые будут доступны в левой части...

как это сделать - C++
вы мне можете помочь, никак не могу понять как это вбить в СИ??? &quot;x-x^/3!+x^/5!+.. . + x^^&quot;'^^V(2n + l)! Функция sh(x) &quot; как это...

Как это сделать? - C++
Дан файл F, содержащий сведения об игрушках: название, стоимость, возрастные границы детей, для которых игрушка предназначена. Найти...

Как это сделать? - C++
Нужно заменить цифры в числе на ноль, если цифра равна &quot;a&quot;. А затем вывести получившееся число. число N - натуральное, а - является...


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

Или воспользуйтесь поиском по форуму:
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
24.10.2012, 23:07     Как это задание сделать через рекурсию? #6
litwisha, так при вычислении через рекурсию не нужны факториал и т.д. В моем коде написано то определении, которое у вас в 1 посту во вложении.

Например можно посчитать рекурсивно C13
0 < 1 < 3 Это 3 случай
C13 = C12 + C01 = ({3 случай} C11 + C01) + ({2 случай} 1) = [ ({2} 1) + ({2} 1) ] + 1 = 1 + 1 + 1 = 3
Это совпадает, если посчитать по определению 3!/(2!*1!) = 6/2 = 3
Yandex
Объявления
24.10.2012, 23:07     Как это задание сделать через рекурсию?
Ответ Создать тему
Опции темы

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