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

Obliczanie rekurencyjne ciągu liczb

Ostatnio zmodyfikowano 2016-01-10 15:26
Autor Wiadomość
Lakjon
Temat założony przez niniejszego użytkownika
Obliczanie rekurencyjne ciągu liczb
» 2016-01-10 13:21:10
Czy mógłby ktoś pomóc, muszę wyświetlić liczby od zadanej granicy dolnej do zadanej granicy gornej z ciagu Xn=Xn-1+(-1)^n*1/n; gdzie X0=1?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int ciag(int, int, int, int, int);

int main(void)
{
int dolna_granica, gorna_granica, x=1, n=0, wynik;
printf("\nPodaj numer od ktorego ma zaczynac sie ciag: ");
scanf("%d", &dolna_granica);
printf("\nPodaj numer na ktorym ma konczyc sie ciag: ");
scanf("%d", &gorna_granica);
if(dolna_granica>gorna_granica)
{
   printf("\nBledne dane-koniec programu");
   exit( 0 );
}
ciag(dolna_granica, gorna_granica, wynik, x, n);
return 0;
}
int ciag(int dolna_granica, int gorna_granica, int wynik, int x, int n)
{
if(dolna_granica>n)
return ciag(dolna_granica, gorna_granica, wynik=x+pow((-1),(n+1))*1/(n+1), x=wynik-x, n=n+1);
if(n<=gorna_granica)
   {
      printf("\n%d", wynik);
      return ciag(dolna_granica, gorna_granica, wynik=x+pow((-1),(n+1))*1/(n+1), x=wynik-x, n+1);
   }
else
      exit(0);
}
P-143264
arciobus
» 2016-01-10 14:32:31
Napisałem sobie to co masz zrobić (w C) i otrzymałem ciąg o wartościach z przedziału <0,1>, więc zmienne int możesz sobie już zamienić od razu na double. Poza tym, wzór jest co prawda rekurencyjny, ale to nie znaczy że trzeba wywoływać funkcje rekurencyjnie. Radziłbym ci raczej robić to w pętlach. Dwie zmienne double x0=x1=1 na początek i potem obliczasz ze wzoru x1 i przypisujesz x0=x1. I twoja funkcja... jest to niby int, ale wywołujesz ją jako void. Radziłbym ci napisać to wszystko od nowa, tym razem bez niekoniecznej rekursji.
P-143275
Gibas11
» 2016-01-10 15:26:06
Jak kolega wyżej dostałem wartości z zakresu <0; 1>, ale we wzorze, który podałeś trzeba się trochę nadomyślać:
Xn=Xn-1 ...
To Xn-1 to X(n-1) czy X(n) - 1?

... *1/n
Jaki to ma sens? Jak dla mnie jest to równoważne po prostu dzieleniu przez n.

Przy okazji - rozumiem, że całość ma być obliczona zgodnie z kolejnością wykonywania działań, tak?
EDIT: Ups, popsułem znaczniki „cytat”. :p
P-143286
« 1 »
  Strona 1 z 1