c++ TłumokMatematyczny: Mam zrobić tak, aby przy wyznaczaniu wartości ciągu Fibonacciego, program dodatkowo zliczał sumę wszystkich do tej pory licz tworzących ten ciąg. Podam na przykładzie. Jezeli wpisalabym liczbę 6, to program wyświetla mi że szósta liczba tego ciągu to 8 ORAZ podaje mi sumę. Wtedy suma=20 bo (1 +1 +2 +3 + 5 +8) to 20. Jak mam zmienić kod żeby program obliczal mi rowniez sume? #include <iostream> using namespace std; int n; int fibo(int w) { if(w<2) return w; else return fibo(w−1)+fibo(w−2); } int main() { cout<<"Program oblicza n−ty wyraz ciagu Fibonaccciego oraz sume wszystkich do tej pory liczb tworzacych ten ciag"<<endl; cout<<"Podaj ktory wyraz chcesz obliczyc "; cin>>n; cout<<fibo(n); cout<<"Suma wszystkich do tej pory liczb tworzacych ten ciag wynosi: "<<cos tu trzeba wpisac<<endl; return 0; }
9 maj 18:26
TłumokMatematyczny: Czy ktoś ma jakiś pomysł?
9 maj 19:14
fil: Oczywiscie, zamiast implementowac wersje rekurencyjna, zaimplementuj iteracyjna
9 maj 19:25
fil: Czyli przy pomocy petli for()
9 maj 19:26
TłumokMatematyczny: I wtedy mi obliczy sume?
9 maj 19:37
fil: Nie, wtedy da ci mozliwosc obliczenia sumy
9 maj 19:40
fil: pytanie czy mialas ciag fib iteratycyjnie
9 maj 19:40
TłumokMatematyczny: Mialam tylko rekurencyjnie
9 maj 19:42
fil: std::cout << "Podaj ktory wyraz" << '\n'; std::cin >> n; int previous = 1; int current = 1; int next = 1; for (int i = 3; i <= n; i++) { next = current + previous; previous = current; current = next; } std::court << next;
9 maj 19:52
TłumokMatematyczny: A mógłbyś mi to proszę wkleić w odpowiednie miejsce w kodzie bo nie chcę nic namieszać? #include <iostream> using namespace std; int n; int fibo(int w) { if(w<2) return w; else return fibo(w−1)+fibo(w−2); } int main() { cout<<"Program oblicza n−ty wyraz ciagu Fibonaccciego oraz sume wszystkich do tej pory liczb tworzacych ten ciag"<<endl; cout<<"Podaj ktory wyraz chcesz obliczyc "; cin>>n; cout<<"Podany wyraz wynosi: "<<fibo(n)<<endl; return 0; }
9 maj 19:58
fil: Ok, ale pamietaj, za narazie to nie liczy sumy cout<<"Program oblicza n−ty wyraz ciagu Fibonaccciego oraz sume wszystkich do tej pory liczb tworzacych ten ciag"<<endl; cout<<"Podaj ktory wyraz chcesz obliczyc "; cin>>n; int previous = 1; int current = 1; int next = 1; for (int i = 3; i <= n; i++) { next = current + previous; previous = current; current = next; } cout<<"Podany wyraz wynosi: "<<next<<endl; return 0; }
9 maj 19:59
TłumokMatematyczny: I to co teraz napisałeś to jest wersja iteracyjna, tak? A co trzeba jeszcze zrobić w tym kodzie aby obliczał sumę? using namespace std; int n; int fibo(int w) { if(w<2) return w; else return fibo(w−1)+fibo(w−2); } int main() { cout<<"Program oblicza n−ty wyraz ciagu Fibonaccciego oraz sume wszystkich do tej pory liczb tworzacych ten ciag"<<endl; cout<<"Podaj ktory wyraz chcesz obliczyc "; cin>>n; int previous = 1; int current = 1; int next = 1; for (int i = 3; i <= n; i++) { next = current + previous; previous = current; current = next; } cout<<"Podany wyraz wynosi: "<<next<<endl; return 0; }
9 maj 20:05
fil: int previous = 1; int current = 1; int next = 1; int sum = 2; for (int i = 3; i <= n; i++) { next = current + previous; sum += next; previous = current; current = next; }
9 maj 20:12
TłumokMatematyczny: Dziękuję Ci bardzo! Tutaj jest gotowy kod. #include <iostream> using namespace std; int n; int fibo(int w) { if(w<2) return w; else return fibo(w−1)+fibo(w−2); } int main() { cout<<"Program oblicza n−ty wyraz ciagu Fibonaccciego oraz sume wszystkich do tej pory liczb tworzacych ten ciag"<<endl; cout<<"Podaj ktory wyraz chcesz obliczyc "; cin>>n; int previous = 1; int current = 1; int next = 1; int sum = 2; for (int i = 3; i <= n; i++) { next = current + previous; sum += next; previous = current; current = next; } cout<<"Podany wyraz wynosi: "<<next<<endl; cout<<"Suma wyrazow wynosi: "<<sum<<endl; return 0; }
9 maj 20:17