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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.97
[CN]Defender
1 / 1 / 0
Регистрация: 25.09.2009
Сообщений: 56
#1

Числа Каталана - C++

30.01.2010, 13:43. Просмотров 3959. Ответов 8
Метки нет (Все метки)

Числами Каталана Сn(n=0,1,2,...) называються числа 1,1,2,5,14,42,132,429,...
Числа Каталана являються решением рекуррентного уравнения
Co=1,Cn=CoCn-1+C1Cn-2+C2Cn-3+...+Cn-1Co при n>0
( -1,-2,-3, - это n-1,n-2,n-3)
Написать на языке С рекурсивную функцию вычисления чисел Каталана
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2010, 13:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Числа Каталана (C++):

Числа Каталана,можно ли проще? - C++
Задание :Числа Каталана Cn, которые играют большую роль в комбинаторике (например, Cn равно числу полных бинарных деревьев с n+1 листьями),...

Для заданного числа n составить последовательность Каталана - C++
Для заданного числа n составить последовательность Каталана, каждое число которого начиная с третьего вычисляется по формуле...

Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

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

Ввести в программу строку (числа, латиница), считать только числа, записать числа в массив - C++
Нужна помощь! Срочно! Нужно ввести в программу строку (числа, латиница), считать только числа, записать числа в массив. Помогите,...

Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми - C++
Даны натуральные числа M, N. Поменять одну из цифр первого числа с цифрой второго числа, чтобы получившиеся числа были взаимно простыми. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Day
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
30.01.2010, 14:50 #2
Можно так.
И без всякой рекурсии получилось
Даже лучше без нее
Код
#include <stdio.h>
#define N 10
void main()
{ long kt[N]; int i, j;
 kt[0] = 1;
 for(i=1; i<N; i++) {
   kt[i] = 0;
   for(j=0; j<i; j++) {
     kt[i] += kt[j]*kt[i-j];
   }
 }
}
/*****************/
[CN]Defender
1 / 1 / 0
Регистрация: 25.09.2009
Сообщений: 56
30.01.2010, 16:39  [ТС] #3
желательно рекурсия а то препод злой
Day
1155 / 960 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
30.01.2010, 21:16 #4
Вот пусть он сам рекурсией эту херню и делает.
Глядишь, может и подобрее станет
Потом было бы любопытно сравнить его предложения с нашими по
1) Внятности кода
2) Эффективности
3) просто по кол-ву строк
4) по возможности переполнения стека
......................
Остальное - на его усмотрение - может какая польза в рекурсии и есть.
[CN]Defender
1 / 1 / 0
Регистрация: 25.09.2009
Сообщений: 56
30.01.2010, 21:26  [ТС] #5
Day, вопросик а что такое #define N 10
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.01.2010, 21:39 #6
Цитата Сообщение от [CN
Defender;515073]вопросик а что такое #define N 10
Директива #define
[CN]Defender
1 / 1 / 0
Регистрация: 25.09.2009
Сообщений: 56
30.01.2010, 21:41  [ТС] #7
fasked, что она делает ? и как сделать что бы прога принимала от меня кол-во эл
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.01.2010, 21:51 #8
Цитата Сообщение от [CN
Defender;515108]что она делает ? и как сделать что бы прога принимала от меня кол-во эл
Грубо говоря, все штуки объявленные дефайнами вставляются в код.
Чтобы прога принимала от тебя значения придется динамический массив делать

Добавлено через 6 минут
Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    int N;
    printf("Введите N: ");
    scanf("%d", &N);
 
    long * kt = (long*)malloc(N*sizeof(long)); 
    int i, j;
    
    kt[0] = 1;
    for(i=1; i<N; i++) 
    {
        kt[i] = 0;
        for(j=0; j<i; j++) 
        {
            kt[i] += kt[j]*kt[i-j];
        }
    }
    
    free(kt);
    return 0;
}
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
31.01.2010, 18:57 #9
Написать на языке С рекурсивную функцию вычисления чисел Каталана
Все весьма тривиально.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int Catalan( int n ) {
 
int i, sum;
 
if ( n<=0 ) { return 1; }
 
sum= 0;
for ( i= 0; i<n; i++ ) {
   sum+= Catalan( i )*Catalan( (n-1)-i );
}
return sum;
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2010, 18:57
Привет! Вот еще темы с ответами:

Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ - C++
Даны два числа. Если квадратный корень из второго числа меньше первого числа, то увличить второе число в пять раз с++ Добавлено через...

Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать - C++
Помогите доздать с++) вот задание: Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие ...

Числа Каталана - Delphi
В общем и целом, нужно delphi, потому что Console Appliccation моя версия не понимает. С паскаля не получится)

Скобковые последовательности. Числа Каталана. - Дискретная математика
Извесно что числа каталана показывают количество правильных скобковых последовательностей. n-количество скобок, а если есть несколько...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.01.2010, 18:57
Ответ Создать тему
Опции темы

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