[C++] N-ty wyraz ciągu

Hebo
Użytkownik
Użytkownik
Posty: 245
Rejestracja: 19 lis 2009, o 19:31
Płeć: Mężczyzna
Lokalizacja: Małopolskie
Podziękował: 28 razy
Pomógł: 9 razy

[C++] N-ty wyraz ciągu

Post autor: Hebo »

Jak obliczyc n-ty wyraz ciagu (iteracyjnie) w C++:

\(\displaystyle{ x_{1} = x_{2} = x_{3} = 1}\)
\(\displaystyle{ x_{i} = (i+3)(x_{i-1}-1)+(i+4)x_{i-3}}\)

zacząłem tak:

Kod: Zaznacz cały

int a = 1;
for(int i=4; i <= n; i=i+1)
a = (i+3)(a-1)+(i+4)x;
i nie wiem dalej co zrobic tym \(\displaystyle{ x}\)
Ostatnio zmieniony 8 lis 2012, o 15:56 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania. Stosuj tagi.
pawellogrd
Użytkownik
Użytkownik
Posty: 844
Rejestracja: 19 lis 2009, o 15:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 121 razy
Pomógł: 156 razy

[C++] N-ty wyraz ciągu

Post autor: pawellogrd »

Wersja iteracyjna:

Kod: Zaznacz cały

#include <iostream>
using namespace std;

int oblicz(int n)
{
  if(1 == n || 2 == n || 3 == n)
  {
      return 1;
  }
  else
  {
      int xn3 = 1; //x_(n-3)
      int xn2 = 1; //x_(n-2)
      int xn1 = 1; //x_(n-1)
      int xn; //obliczany wyraz ciagu
      for(int i=4; i<=n; i++) {
          xn3=xn2;
          xn2=xn1;
          xn1=xn;
          xn=(i+3)*(xn1-1)+(i+4)*xn3;
      }
      return xn;;
  }

}

int main() {

	int n = 0;
	
	cin >> n;
	cout << oblicz(n);

	return 0;

}
i rekurencyjna (w razie potrzeby):

Kod: Zaznacz cały

#include <iostream>
using namespace std;

int oblicz(int n)
{
  if(1 == n || 2 == n || 3 == n)
  {
      return 1;
  }
  else
  {
      return (n+3)*(oblicz(n-1)-1) + (n+4)*oblicz(n-3);
  }

}

int main() {

	int n = 0;
	
	cin >> n;
	cout << oblicz(n);

	return 0;

}
ODPOWIEDZ