Так что я не уверен, что здесь происходит.
У меня есть функция, которая должна решить эту проблему, за исключением того, что при наборе элементов массива вmain () Я получаю разные результаты:
- 0, если я нахожу его в одной строке с функцией
- правильный результат, если я выписываю его ниже
Вот код:
#include <bits/stdc++.h>
using namespace std;
int a[100100],mx=0,bg;
int collatz(int n){
a[1] = 1;
for(int i=2; i<=n; i++){
int p = 0;
int j=i;
while(j!=1 && j>=i){
if(j%2==0) j/=2, p++;
else if(j%2==1) j=3*j+1,
}
a[i] = p + a[j];
if(mx<a[i]) mx = a[i], bg = i;
}
return mx;
}
int main()
{
for(int i=1; i<=10000; i++) a[i] = 0;
cout << collatz(1000) << " " << a[1] << " " << a[2] << " " << a[3]<< "\n";
cout << a[1] << " " << a[2] << " " << a[3] << " ";
return 0;
}
И вот что я получаю:
Компилятор, который я использую - это CodeBlocks,хотя я проверял это на других, и это та же проблема!
Спасибо