0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ... Şeklinde verilen sayı sırasındaki fibonacci sayı değerini ekrana yazan rekursif fonksiyonu C++ dili ile yardımcı olursanız sevinirim.
Öncelikle recursive ya da özyinelemeli de.
Sonrasında;
Kod:
#include <iostream>
using namespace std;
int fib(int num) {
if (1 == num || 0 == num)
return num;
else {
return fib(num - 1) + fib(num - 2);
}
}
int main() {
auto term{ 0 };
auto idx{ 0 };
cout << "Kacinci sayiya kadar istiyorsun? ";
cin >> term;
cout << "Fibonnaci Sayilari : ";
while (term > idx) {
cout << " " << fib(idx);
++idx;
}
cout << endl;
return 0;
}
Mantık şöyle. Kaçıncı terim olursa olsun kendisinden önceki iki terimin toplamı olduğunu biliyorsun. O şekilde kendisini çağırıyorsun fonksiyonun. Sıfır ya da 1'e denk geldiğinde ise bir değeri var. Bu değeri döndürmelisin. O yüzden o if orada var. Maindeki kısım dışında terimli olarak nasıl yapılabilir bilmiyorum. Çünkü bu sefer indexini de tutman gerekiyor. Recursive olması çok dallanıp budaklanmasını sağlıyor. Özellikle bunu 3'lü olarak yaparsan pek dayanmıyor.
Öncelikle recursive ya da özyinelemeli de.
Sonrasında;
Kod:
#include <iostream>
using namespace std;
int fib(int num) {
if (1 == num || 0 == num)
return num;
else {
return fib(num - 1) + fib(num - 2);
}
}
int main() {
auto term{ 0 };
auto idx{ 0 };
cout << "Kacinci sayiya kadar istiyorsun? ";
cin >> term;
cout << "Fibonnaci Sayilari : ";
while (term > idx) {
cout << " " << fib(idx);
++idx;
}
cout << endl;
return 0;
}
Mantık şöyle. Kaçıncı terim olursa olsun kendisinden önceki iki terimin toplamı olduğunu biliyorsun. O şekilde kendisini çağırıyorsun fonksiyonun. Sıfır ya da 1'e denk geldiğinde ise bir değeri var. Bu değeri döndürmelisin. O yüzden o if orada var. Maindeki kısım dışında terimli olarak nasıl yapılabilir bilmiyorum. Çünkü bu sefer indexini de tutman gerekiyor. Recursive olması çok dallanıp budaklanmasını sağlıyor. Özellikle bunu 3'lü olarak yaparsan pek dayanmıyor.
Eski bir sürüm kullanıyorsundur A'sı büyük şekilde yazmıyorsan. Daha rahat yazmak için. Hem ilk değerini vermek zorunda kalıyorsun. Bu sayede hatalardan uzak kalıyorsun. int term = 0; da diyebilirsin.
C++11 ile gelmiş. Buradan görebilirsin.
Kodu çalıştırınca senden bir değer isteyecek. 10 dersen 10 tane fibonacci sayısı yazar program. 20 dersen 20 tanesini yazar. Sırasıyla tabii. Bu kadar yani. Pek hakim değil gibisin bu konulara, kodları sağdan soldan bulmak yerine satır satır kod okuyup anlamayı kavra bence bu erken aşamalarda.
Öncelikle recursive ya da özyinelemeli de.
Sonrasında;
Kod:
#include <iostream>
using namespace std;
int fib(int num) {
if (1 == num || 0 == num)
return num;
else {
return fib(num - 1) + fib(num - 2);
}
}
int main() {
auto term{ 0 };
auto idx{ 0 };
cout << "Kacinci sayiya kadar istiyorsun? ";
cin >> term;
cout << "Fibonnaci Sayilari : ";
while (term > idx) {
cout << " " << fib(idx);
++idx;
}
cout << endl;
return 0;
}
Mantık şöyle. Kaçıncı terim olursa olsun kendisinden önceki iki terimin toplamı olduğunu biliyorsun. O şekilde kendisini çağırıyorsun fonksiyonun. Sıfır ya da 1'e denk geldiğinde ise bir değeri var. Bu değeri döndürmelisin. O yüzden o if orada var. Maindeki kısım dışında terimli olarak nasıl yapılabilir bilmiyorum. Çünkü bu sefer indexini de tutman gerekiyor. Recursive olması çok dallanıp budaklanmasını sağlıyor. Özellikle bunu 3'lü olarak yaparsan pek dayanmıyor.