Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z pętlą while. Wypisywanie ciągu

Ostatnio zmodyfikowano 2015-11-12 23:49
Autor Wiadomość
pekfos
» 2015-11-04 17:56:27
Podaj kod.
P-139642
kiereso
Temat założony przez niniejszego użytkownika
» 2015-11-05 19:00:03
C/C++
#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.
P-139676
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..
P-139679
Lora
» 2015-11-05 20:48:03
Wylicza niepoprawny wynik, bo źle stosujesz wzór rekurencyjny.
C/C++
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.
P-139680
Rashmistrz
» 2015-11-05 21:14:41
@Lora
Napisałem to samo parę minut wcześniej, :F
(oprócz tego jak zrobić to rekurencyjnie.)
P-139682
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;
}
P-140057
1 « 2 »
Poprzednia strona Strona 2 z 2