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

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

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

рекурсия B c++ - C++

18.09.2011, 17:19. Просмотров 473. Ответов 5
Метки нет (Все метки)

пожалуйста помогите,почему не работает?
дело в рекурсии,функция func1 вызывается много раз..

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 int func1 (float A[z][z],float B[z][z],float C[z][z],int N){ 
 
      int m;
      float P7[q][q],P6[q][q],P5[q][q],P4[q][q],P3[q][q],P2[q][q],P1[q][q],
      B11[q][q],B12[q][q],B21[q][q],B22[q][q],A11[q][q],A12[q][q],A21[q][q],A22[q][q],
      Asum1[q][q],Asum2[q][q],Asum5[q][q],Asum6[q][q],Asum7[q][q],
      Bsum1[q][q],Bsum3[q][q],Bsum4[q][q],Bsum6[q][q],Bsum7[q][q];
      
/////////////////////////////////////////////////////////////
  
    m=N/2;
 
    
     for(int i = 0;  i< m; ++i){
      for(int j = 0; j < m; ++j){
      (A11)[i][j]=0;
      (A11)[i][j]+=(A)[i][j];
      (A12)[i][j]=0;
      (A12)[i][j]+=(A)[i][j+m];
      (A21)[i][j]=0;
      (A21)[i][j]+=(A)[i+m][j];
      (A22)[i][j]=0;
      (A22)[i][j]+=(A)[i+m][j+m];}}
 
 
      for(int i = 0;  i< m; ++i){
      for(int j = 0; j < m; ++j){
      (B11)[i][j]=0;
      (B11)[i][j]+=(B)[i][j];
      (B12)[i][j]=0;
      (B12)[i][j]+=(B)[i][j+m];
      (B21)[i][j]=0;
      (B21)[i][j]+=(B)[i+m][j];
      (B22)[i][j]=0;
      (B22)[i][j]+=(B)[i+m][j+m];}}
      
      
     for(int i = 0;  i< m; ++i){
      for(int j = 0; j < m; ++j){
        
      Asum1[i][j]+=A11[i][j]+A22[i][j];      
     Bsum1[i][j]+=B11[i][j]+B22[i][j];
      
      Asum2[i][j]+=A21[i][j]+A22[i][j];
      
      Bsum3[i][j]+=B12[i][j]-B22[i][j];
      
      Bsum4[i][j]+=B21[i][j]-B11[i][j];
      
      Asum5[i][j]+=A11[i][j]+A12[i][j];
      
      Asum6[i][j]+=A21[i][j]-A11[i][j];
       Bsum6[i][j]+=B11[i][j]+B12[i][j];
       
        Asum7[i][j]+=A12[i][j]-A22[i][j];
        Bsum7[i][j]+=B21[i][j]+B22[i][j];}}
        
        
        if(m<2){   
           
                func2(Asum1,Bsum1,P1,m);
                func2(Asum2,B11,P2,m);
                func2(A11,Bsum3,P3,m);
                func2(A22,Bsum4,P4,m);
                func2(Asum5,B22,P5,m);
                func2(Asum6,Bsum6,P6,m);
                func2(Asum7,Bsum7,P7,m);
                int i;
                for( i=0;i<m;i++){
                for(int j=0;j<m;j++)         
                for(int k=0;k<m;++k) {  
                (C)[i][j]=P1[i][k]+P4[i][k]+P7[i][k]-P5[i][k];
                (C)[i][j+m]=P3[i][k]+P5[i][k];
                (C)[i+m][j]=P2[i][k]+P4[i][k];
                (C)[i+m][j+m]=P1[i][k]-P2[i][k]+P3[i][k]+P6[i][k];}}
                }  
                   
   
                else{ 
                
                          
          return func1(Asum1,Bsum1,P1,m);
          return func1(Asum2,B11,P2,m);
         return func1(A11,Bsum3,P3,m);
         return func1(A22,Bsum4,P4,m); 
         return func1(Asum5,B22,P5,m); 
         return func1(Asum6,Bsum6,P6,m); 
         return func1(Asum7,Bsum7,P7,m);
         int i;
                for( i=0;i<m;i++){
                for(int j=0;j<m;j++)         
                for(int k=0;k<m;++k) {  
                (C)[i][j]=P1[i][k]+P4[i][k]+P7[i][k]-P5[i][k];
                (C)[i][j+m]=P3[i][k]+P5[i][k];
                (C)[i+m][j]=P2[i][k]+P4[i][k];
                (C)[i+m][j+m]=P1[i][k]-P2[i][k]+P3[i][k]+P6[i][k];}}
         }
                
       
                
               
        
        
      
                   
        
    ofstream oos;
    oos.open("rezultatai.txt");
    oos<<"C:\n"<<endl;                                                                
    for(int i=0;i<kiek;i++){
    oos<<endl<<endl;
    for(int j=0;j<kiek;j++){
    oos<<"["<<setw(2)<<C[i][j]<<setw(2)<<"]";}}
    oos.close();
    
//////////////////////////////////////////////////
 
}      
 
    int func2 (float A[z][z],float B[z][z],float C[z][z],int N){ 
         
    for(int i=0;i<N;++i)
    for(int j=0;j<N;++j){
  
     C[i][j]=0;
     for(int k=0;k<N;++k)
     C[i][j]+=A[i][k]*B[k][j];}
     
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2011, 17:19     рекурсия B c++
Посмотрите здесь:

рекурсия - C++
здравствуйте! я начал изучать с++... дошел до функций (а именно рекурсии)... я понял, что рекурсия-это функция, которая сама себя...

Рекурсия - C++
Помогите написать функцию которая будет считать эту рекуррентную формулу с помощью рекурсии

Рекурсия!!!! - C++
Доброго времени суток!!! В С++ полный нуб.... маюсь не первый день с такой задачкой: Напишите рекурсивную подпрограмму вычисления...

рекурсия - C++
Сделать рекурсию, кроме факториала!

рекурсия - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void someFunction ( int , int, int ); int main () { ...

Рекурсия - C++
Помогите написать рекурсию. Задание прилагаю

Рекурсия - C++
#include&lt;stdio.h&gt; void gg(int a,int b) { int i=0; if(a==20) return; printf(&quot;%d\n&quot;,a); printf(&quot;%d\n&quot;,b); gg(a+1,b-1); ...

Рекурсия - C++
Приветствую. Прошу помощи. Нужно посчитать Xn по формуле: С рекурсией плохо дружу. Заранее благодарен.

Рекурсия - C++
Не понимаю каков будет порядок действий в функции допустим когда(level =2). По тому как я понял работает рекурсия, когда начнется алгоритм...

Рекурсия - C++
Есть функция, в нее передается массив из n элементов. Функция находит минимальный элемент и считает сколько раз он встречается в массиве,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zverit
Уничтожитель печенек
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
18.09.2011, 17:37     рекурсия B c++ #2
Ну
Цитата Сообщение от антон1986 Посмотреть сообщение
else{
return func1(Asum1,Bsum1,P1,m);
return func1(Asum2,B11,P2,m);
return func1(A11,Bsum3,P3,m);
return func1(A22,Bsum4,P4,m);
return func1(Asum5,B22,P5,m);
return func1(Asum6,Bsum6,P6,m);
return func1(Asum7,Bsum7,P7,m);
int i;
for( i=0;i<m;i++){
for(int j=0;j<m;j++)
for(int k=0;k<m;++k) {
(C)[i][j]=P1[i][k]+P4[i][k]+P7[i][k]-P5[i][k];
(C)[i][j+m]=P3[i][k]+P5[i][k];
(C)[i+m][j]=P2[i][k]+P4[i][k];
(C)[i+m][j+m]=P1[i][k]-P2[i][k]+P3[i][k]+P6[i][k];}}
}
Вызовится первый return, остальные не будут учитываться.

Не по теме:

Ну ничего же себе, вы нагородили

антон1986
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 3
18.09.2011, 18:08  [ТС]     рекурсия B c++ #3
да и без ретурнов не очень работает,плохой ответ даёт..
IrineK
Заблокирован
18.09.2011, 18:56     рекурсия B c++ #4
Сформулируйте исходную задачу.
А то что-то код "попахивает".
антон1986
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 3
18.09.2011, 19:07  [ТС]     рекурсия B c++ #5
я новичок и не понимаю как сделать так, чтобы код работал. Уже столько просидел и толку - нoль.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.09.2011, 19:11     рекурсия B c++ #6
Цитата Сообщение от антон1986 Посмотреть сообщение
я новичок и не понимаю как сделать так, чтобы код работал. Уже столько просидел и толку - нoль.
Цитата Сообщение от IrineK Посмотреть сообщение
Сформулируйте исходную задачу.
опиши, что должна делать твоя программа (подробно и, желательно, без пунктуационных и орфографических ошибок). По твоему коду это понять нельзя.
Yandex
Объявления
18.09.2011, 19:11     рекурсия B c++
Ответ Создать тему
Опции темы

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