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

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

Восстановить пароль Регистрация
 
антон1986
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 3
18.09.2011, 17:19     рекурсия B c++ #1
пожалуйста помогите,почему не работает?
дело в рекурсии,функция 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zverit
Уничтожитель печенек
 Аватар для 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
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
18.09.2011, 19:11     рекурсия B c++ #6
Цитата Сообщение от антон1986 Посмотреть сообщение
я новичок и не понимаю как сделать так, чтобы код работал. Уже столько просидел и толку - нoль.
Цитата Сообщение от IrineK Посмотреть сообщение
Сформулируйте исходную задачу.
опиши, что должна делать твоя программа (подробно и, желательно, без пунктуационных и орфографических ошибок). По твоему коду это понять нельзя.
Yandex
Объявления
18.09.2011, 19:11     рекурсия B c++
Ответ Создать тему
Опции темы

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