Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
litwisha
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 59
1

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

24.10.2012, 20:36. Просмотров 534. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 20:36
Ответы с готовыми решениями:

Как сделать это задание?
Определить номер первого из чисел sin x, sin(sin x), sin(sin(sin x)),..,...

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

Как сделать это задание?
329 задание. Подскажите пожалуйста подробно, как это задание выполнить?

Задание на рекурсию и последовательность
Даны 55 чисел – элементов последовательности, где x1 –первый элемент...

нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
Здравствуйте.У меня возникла проблема. Помогите пожалуйста!Модуль в понедельник...

5
doctor_lecter
283 / 156 / 30
Регистрация: 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);
}
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
24.10.2012, 21:19 3
doctor_lecter, маленькая опечатка во втором случае.
0
Thinker
Эксперт С++
4234 / 2208 / 203
Регистрация: 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);
}
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);
}
Я не совсем понимаю рекурсию, но в вашем коде я не вижу ни операции факториала, ни операции умножения или деления, которые нужны для вычисления биномиальных коэфициентов. Обьясните, пожалуйста, почему
0
doctor_lecter
283 / 156 / 30
Регистрация: 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
1
24.10.2012, 23:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 23:07

Как вообще понимать это задание?
Написать программу на языке программирования С++, которая воспринимает время...

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

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


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

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

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