Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
1

Разбить рекурсивную функцию на две рекурсивные функции

14.03.2016, 20:37. Просмотров 428. Ответов 1
Метки нет (Все метки)

Добрый вечер. Нужно распаралелить програму,которая ищет разложение числа n на m слагаемых. По идеи нужно разбить рекурсивную функцию на две рекурсивные и сделать из них два отдельных процесса. Но не приходит в голову как разбить эту рекурсию на две. Может у кого-то есть идеи?Спасибо
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include "mpi.h"
 
 
using namespace std;
 
int n, m,sum[40],k=0;
void print_terms(int left, int min = 0, int i = 0)
{
    cout<<"left ="<<left<<" min= "<<min<<" i="<<i<<endl;
    if (left < 0 || min == n)
        return;
    
    sum[i] = min;
    if (min != 0)
    {
        print_terms(left - min, min, i + 1);
    }
    print_terms(left - 1, min + 1, i);
    if (left == 0&&i==m)
    {
        for (int j = 0; j <= i; ++j)
           cout<< sum[j] << (j != i ? '+' : '\n');
        
    }
    
    if(i>m)
        return;
    
 
}
 
int main (int argc, char **argv)
{
 
    int size,rank;
MPI_Init(&argc,&argv); // Инициализация MPI
MPI_Comm_size(MPI_COMM_WORLD,&size); // Получение числа процессов
MPI_Comm_rank(MPI_COMM_WORLD,&rank); // Получение номера процесса
printf("Hello from process #%d of %d\n",rank,size);
    u:cin>> n>>m; 
    m=m-1;
    if(m>=n)
    {
        cout<<"Uncorrect.Repeat"<<endl;
        goto u;
    }
    
    print_terms(n);
    MPI_Finalize();
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2016, 20:37
Ответы с готовыми решениями:

Рекурсивные и не рекурсивные функции (вычисление суммы всех натуральных чисел от 1 до n)
Всем привет. Заранее извиняюсь за мб глупые вопросы и навязчивость. Но у меня есть одна просьба. ...

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

Напишите рекурсивную функцию для вычисления функции Эйлера
Доброе утро!! Помогите пожалуйста решиь две задачи: Напишите рекурсивную функцию для вычисления...

Реализовать рекурсивную функцию для вычисления значений функции
Реализовать рекурсивную функцию для вычисления значений функции. Я не понимаю что и как с этой...

1
5 / 5 / 5
Регистрация: 16.12.2013
Сообщений: 463
17.03.2016, 18:39  [ТС] 2
Никто не подскажет?(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2016, 18:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Рекурсивные процедуры и функции: писать рекурсивную логическую функцию Simm
Описать рекурсивную логическую функцию Simm (S,I,J), проверяющую, является ли симметричной часть...

Как связать две рекурсивные функции в одной?
я у меня написаны две рекурсии PrintCatalog и Printtree (как эти два кода связать в одной новой...

Функцию через Алгоритм Маркова и Рекурсивные функции
F=(A+(B≡C)) 1)Алгоритм должен вычислять логическую функцию F над битами целочисленных аргументов...

Рекурсия: Как сделать из такой функции рекурсивную функцию?
Как сделать из такой функции рекурсивную функцию? function mnoj(days,n,q:integer):integer; begin...


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

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

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