#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;
}
Ö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.Çok teşekkür ederim fakat Auto term hata alıyorum bu kodda.
int term = 0;
da diyebilirsin.Ö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.
Tabii atayım hemen.Dostum bunu bana C dili halini atabilrsen memnun olurum.
#include <stdio.h>
int fib(int num) {
if (1 == num || 0 == num)
return num;
else {
return fib(num - 1) + fib(num - 2);
}
}
int main() {
int term = 0;
int idx = 0;
printf("Kacinci sayiya kadar istiyorsun? ");
scanf("%d", &term);
printf("Fibonnaci Sayilari : ");
while (term > idx) {
printf(" %d", fib(idx));
++idx;
}
printf("\n");
return 0;
}
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.