Problem z pętlą while. Wypisywanie ciągu
Ostatnio zmodyfikowano 2015-11-12 23:49
pekfos |
» 2015-11-04 17:56:27 Podaj kod. |
|
kiereso Temat założony przez niniejszego użytkownika |
» 2015-11-05 19:00:03 #include <stdio.h>
int main() { int i = 0; int f = 0; int n; scanf( "%d", & n ); while( i < n ) { i++; f = f + i + 2; } printf( "%d\n", f ); return 0; } Nic w nim nie zmieniałem bo nadal nie działa. |
|
pekfos |
» 2015-11-05 20:27:23 Nic w nim nie zmieniałem bo nadal nie działa. |
Czyli najpierw musi sam zacząć działać, zanim go poprawisz..? Jakbyś potrafił wszystko od razu poprawnie zapisać, to tego tematu by nie było. Podaj kod zmodyfikowany wg podanych tu odpowiedzi. Wracając do punktu wyjścia do niczego nie zmierzasz.. |
|
Lora |
» 2015-11-05 20:48:03 Wylicza niepoprawny wynik, bo źle stosujesz wzór rekurencyjny. while( i < n ) { i++; f = f + i + 2; }
Według tego kodu F(1) = 3, podczas gdy powinno być równe jeden. Najlepiej napisz funkcję rekurencyjną typu: Jeśli n == 0 -> zwróć 0; Jeśli n == 1 -> zwróć 1; Jeśli n > 1 -> wywołaj samą siebie z argumentem n-2, do wyniku dodaj n i zwróć tę wartość;
gdzie n to argument funkcji. |
|
Rashmistrz |
» 2015-11-05 21:14:41 @Lora Napisałem to samo parę minut wcześniej, :F (oprócz tego jak zrobić to rekurencyjnie.) |
|
kiereso Temat założony przez niniejszego użytkownika |
Wykonałem rekurencyjnie i działa. Dzięki za pomoc. Temat można zamknąć. » 2015-11-12 23:49:11 #include <cstdlib> #include <iostream> using namespace std; int f(int n) { if(n==1) return 1; else if (n==0)return 0; else return f(n-2)+n; } int main() { int n; cin>>n; cout<<f(n)<<endl; return 0; } |
|
1 « 2 » |