Arkadaşlar şu kodu calistirdigimda neden 89 geliyor
#include <iostream>
using namespace std;
int f(int n)
{
}
int main()
{
cout << "factorial of 5 is "<< f(0);
return 0;
}
Arkadaşlar şu kodu calistirdigimda neden 89 geliyor
#include <iostream>
using namespace std;
int f(int n)
{
}
int main()
{
cout << "factorial of 5 is "<< f(0);
return 0;
}
f
fonksiyonunun içi boş. Bende farklı bir değer dönüyor.
Şöyle yapabilirsiniz:
#include <iostream>
using namespace std;
int f(int n)
{
int result = 1;
for(int i = 1; i < n + 1; i++)
{
result *= i;
}
return result;
}
int main()
{
cout << "factorial of 5 is " << f(5) << "\n";
return 0;
}
Bu da öz-yinelemeli
hali.
#include <iostream>
using namespace std;
int f(int n, int k = 1)
{
if (n == 1)
{
return k;
}
else {
return f(n=n - 1, k=k * n);
}
}
int main()
{
cout << "factorial of 5 is " << f(5) << "\n";
return 0;
}
Niye gelmesin? Başka bir şey döndürmesini söylememişsiniz.
Undefined behavior bolgesine girmissin. O noktadan sonra her sey olabilir, 89 gelmesi de bu sonsuz olasiliklar dahilinde.
Kodunu butun warning’leri acarak derlemeni tavsiye ediyorum.
birde size zahmet bir sorum daha var … (diyip beklemicem direk sorucam )
şimdi fibonacci sayılarını ekrana basma işleminde
#include <iostream>
using namespace std;
void fib(int n){
int a=1;int b=1;
cout << a;
for (int x=1;x<n;x++){
a=b;
b=a+b;
cout << a;
}
}
ile
def fib(n):
a,b=1,1
print(a);print(b)
for i in range(1,n+1):
a,b=b,a+b
print(b)
ekrana bastığı sayılar farklı ama neden?
mesela birincisinde 1 1 2 4 8 16 32 64 128 256
ama ikincisinde 1 1 2 3 5 8 13 21 34 55 89 144
niyeee aynı mantık değil mi değilse nedenini açıklarmısınız lütfen!!!
Python değişkenlerin değerini takas ederken yedekte geçici bir değişken oluşturuyor. Sağ taraftaki a
ifadenin tamamı bitene kadar değişmediği için bu kod istediğiniz gibi çalışıyor. Ayrıca iki kodun eşdeğer olmadığını biraz incelerseniz anlarsınız zaten, ilk kod b
’yi sürekli ikiye katlıyor. a
ve b
’nin değiştirildiği yeri C++'dan kopyalayıp Python’a yapıştırırsanız orada da benzer bir sonuç alırsınız.
?
burayı tam anlamadım galiba yapabiliyorsanız biraz daha açıklayabilir misiniz?
a,b=1,1
#ben
a,b=b,a+b # yi
a=b
b=a+b#diye zannediyordum
sanırım anladım mesela şöyle bir örnek vereyim
a,b=5,6
a,b=b,a+b
print(a,b)
a,b=5,6
a=b
b=a+b
print(a,b)
bu ifade de ilk kısımda önce atanacak değerleri hazırlıyor
mesela atanacak değerler 5,6+5 oluyor
ama alttakinde ise
önce
a=b yani ikiside 6 ve sonra ikisinide topluyor yani mantıken
b=6+6 olmuş oluyor ikiye katlıyor
doğru muyum?
mesela bu çalıştı cpp de
#include <iostream>
using namespace std;
void fib(int n){
int a=1;int b=1;int c;
cout << a << b;
for (int x=1;x<n;x++){
c=a+b;
a=b;
b=c;
cout << b;
}
}
int main()
{
fib(10);
return 0;
}
sağol’un çok yardımcı oldunuz @EkremDincel
Evet, sizin C++'de yaptığınızı değişkenleri takas ederken Python kendi yapıyor.
C++'ta ,
operatoru islemleri sekanslamak (art arda yapmak) icin kullaniliyor. ,
yerine ;
+ enter koyarsaniz ne yaptigini daha iyi anlayabilirsiniz.