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

Составить рекурсивную функцию для вычисления указанного числа - C++

Восстановить пароль Регистрация
 
Зуфа
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 7
06.10.2011, 12:22     Составить рекурсивную функцию для вычисления указанного числа #1
1. Составить рекурсивную функцию для вычисления числа указанного в варианте. Составить функцию для вывода результатов в виде треугольника. Использовать в программе.
2. Создать функцию без использования рекурсии для решения поставленной в варианте задачи и использовать в программе.
Задание 1
C(N,K)= C(N-1,K-1)+ C(N-2,K-1)+C(N-1,K)
Задание 2
a^x ≡b mod m

P.S
Методические указания

1. Для всех чисел C(N,K)=0 если K>N,K<0 или N<0.
2. Симметричные числа вывести в виде равнобедренного а несимметричные в виде прямоугольного треугольника.
3. Запись в модулярной арифметике a≡b (mod n) читается так: "а сравнимо с b по модулю n" справедливо для целых значений а, b и n  0, если, и только если a=b+k*n для некоторого целого k
4. Набор целых чисел от 0 до (n-1) в модулярной арифметике называют полным набором вычетов по модулю n.
5. Вычислить степень числа а по модулю n, то есть найти x=ak mod n можно на основе следующих соотношений:
ak mod n = (ak/2 mod n)2 mod n если n четное.
ak mod n = (ak-1 mod n)*a) mod n если n нечетное.
Например: a16 mod n = (((a2 mod n)2 mod n)2mod n)2 mod n.
6. Алгоритм вычисления наибольшего общего делителя НОД (а, b) c делением:
НОД (а, b)=a если a=b,
НОД (а, b)= НОД (b, a) если a<b,
Пусть a=b*r+q
НОД (а, b)= r если q=0,
НОД (а, b)= НОД (b, r) если q>0
Бинарный алгоритм вычисления НОД (а, b):
НОД (а, b)=a если a=b,
НОД (а, b)= НОД (b, a) если a<b,
НОД (а, b)= 2*НОД (a/2, b/2) если a и b четные
НОД (а, b)= НОД ((a-b)/2, b) если a и b нечетные
НОД (а, b)= НОД a, b/2) если a нечетное и b четное
НОД (а, b)= НОД (a/2,b), b) если a четное и b нечетное
Для вычисления наименьшего общего кратного необходимо использовать формулу НОК (а, b)=(a*b)/ НОД (а, b)

Добавлено через 12 часов 57 минут
Задание 1
C++
1
2
3
4
5
6
7
8
int RecursionC(int n, int k)
{
    if (n == 0 && k == 0) return 1;
    if (k > n || n < 0 || k < 0) return 0;
 
    int result = RecursionC(n-1, k-1) + RecursionC(n-1, k);
    return result;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void TriangleOutput(int n)
{
    int count = n;
    for (int i = 0; i <= n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            int x = RecursionC(i, j);
            if (j == 0)
            {
                for (int space = 0; space < count; space++)
                    cout << "  ";
 
                count--;
            }
            cout << x << "   ";
        }
        cout << endl;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
    int N;
    cout << "Введите N: ";
    cin >> N;
 
    TriangleOutput(N);
 
    system("pause");
    return 0;
}
Задание друга хелп ми исправить код под свою задачу

Добавлено через 3 минуты
есть ещё другой вариант
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
30
31
32
33
34
35
36
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int C(int N, int K) {
    if(N==0 && K==0) return 1;
    if(K>N || K<0 || N<0 ) return 0;
    if(N==0 || K==0) return 0;
    if(N%2!=0) return K*C(N-1,K-1);
    else return K*C(N-1,K-1)+C(int(N/2), K);
}
 
void treug(int N) {
    int s;
    cout<<" K\t";
    for(int i=1; i<=N; i++) cout<<i<<" ";
    cout<<endl<<"N"<<endl;
    for(int i=1; i<=N; i*=2) {
        cout<<i<<'\t';
        for(int j=1; j<=N; j++) {
            s = C(i,j);
            if(s==0) break;
            cout<<s<<" ";
        }
        cout<<endl;
    }
}
 
void main() {
    int N;
    cin>>N;
    treug(N);
    system("pause");
}
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2011, 12:22     Составить рекурсивную функцию для вычисления указанного числа
Посмотрите здесь:

C++ Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
C++ Составить рекурсивную функцию вычисления НОД
C++ 9.Составить рекурсивную функцию вычисления
C++ Реализовать рекурсивную функцию вычисления степени из числа
Написать рекурсивную функцию для вычисления суммы цифр натурального числа, введенного пользователем C++
C++ Написать рекурсивную функцию вычисления количества цифр натурального числа
C++ Написать рекурсивную функцию вычисления суммы цифр натурального числа
C++ Разработать рекурсивную функцию, для вычисления числа сочетаний

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru