Rekurencja w C++. Prosty przykład funkcji matematycznej.
Problem:
Mamy funkcję określoną wzorem:
Dla podanego n, oblicz f(n). W programie użyj REKURENCJI i ITERACJI.
Koduj sam, ale film może Ci pomóc zrozumieć ....
W poniższym filmie:
- określenie rekurencji,
- układanie oczekiwanych wartości na wieży (stosie),
- odczytanie znanego rozwiązania,
- zdejmowanie wartości ze stosu,
- LIFO,
- kodowanie wersji rekurencyjnej,
- kodowanie wersji iteracyjnej,
- co, jeśli przekraczamy zakres int?
Do obejrzenia i przećwiczenia:
Kod, który powstał w filmie:
#include <iostream> #include <iomanip> using namespace std; //rekurencyjnie long double fRek(int n){ if(n==0) return 1; else return 2*fRek(n-1)+3; } //iteracyjne long double fIter(int n){ long double wynik=1, i; for(i=1; i<=n; i++) wynik=2*wynik+3; return wynik; } int main() { int n, i; cout << "podaj n: "; cin >>n; cout << "REKURENCYJNIE:\n"; for(i=0; i<=n; i++) cout << "f(" << i << ") = " << setprecision(1000) << fRek(i) << endl; cout << "ITERACYJNIE:\n"; for(i=0; i<=n; i++) cout << "f(" << i << ") = " << setprecision(1000) << fIter(i) << endl; //cout << setprecision(20000) << fRek(20000) << endl; return 0; }
Użycie kodu:
- Powyższy kod można wykorzystać w środowisku Dev C++ lub innym. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
- Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh