n ** (1 / 3) işlemi, ondalık sayılarla yapılan bir işlem ve dolayısıyla tam istediğiniz sonucu elde edemeyebiliyorsunuz. Tıpkı şuradaki gibi bir durum yaşanıyor:
Kod:
>>> 0.1 + 0.2
0.30000000000000004
Bu durum, ondalık sayıları bilgisayarın tutma şeklinden yani donanımsal kısıtlardan kaynaklanıyor. Şurada detayları okuyabilirsiniz.
Gerçekten de 1000 ** (1 / 3)'ün 10'a çok yakın ama 10 olmadığını görebiliriz:
n ** (1 / 3) işlemi, ondalık sayılarla yapılan bir işlem ve dolayısıyla tam istediğiniz sonucu elde edemeyebiliyorsunuz. Tıpkı şuradaki gibi bir durum yaşanıyor:
Kod:
>>> 0.1 + 0.2
0.30000000000000004
Bu durum, ondalık sayıları bilgisayarın tutma şeklinden yani donanımsal kısıtlardan kaynaklanıyor. Şurada detayları okuyabilirsiniz.
Gerçekten de 1000 ** (1 / 3)'ün 10'a çok yakın ama 10 olmadığını görebiliriz:
def d:
İf n ==0:
Return 0
k = int(n ** (1 / 3))
return D(n - k ** 3) + 1
print(D(1000))
Öncelikle kodun aynen böyleyse bir sürü yanlış var. Fonksiyonu "D" ile çagırmışsın ancak fonksiyonun "d" ve fonksiyon tanımlarken () kullanımı yapmamışsın. Programlama dillerinin çogu büyük küçük harflere duyarlıdır. 2. satırda "if n== 0" ise sanırım 0 dönmek istemişsin ancak if blogunun altında herhangi bir komut yok. Pythonda blokların altına özel komutlar koymak için o satırın altına gidip girinti (boşluk) bırakmamız gerekiyor. Yani programa ne girersen gir if sorgusuna bakıp direkt return 0 oluyor (ve Return 0 degil return 0 olmalı programı nasıl bu şekilde çalıştırıp 5 çıktısını almışsın anlamadım hata vermesi lazımdı sanırım kodu yanlış attın buraya). Kodun yazım olarak dogru hali :
Python:
def D():
if n ==0:
return 0
k = int(n ** (1 / 3))
return D(n - k ** 3) + 1
print(D(1000))
Büyük küçük harf hataları siteye kodu geçirirken oldu , koddaki hata 1000**1/3 ü 10 olarak değil 9.9999 olarak hesaplamasıymış, yazım hatasından dolayı konunun otomatik kapandığını düşünmüştüm, ama açıkmış, sorun dediğim gibi.
Büyük küçük harf hataları siteye kodu geçirirken oldu , koddaki hata 1000**1/3 ü 10 olarak değil 9.9999 olarak hesaplamasıymış, yazım hatasından dolayı konunun otomatik kapandığını düşünmüştüm, ama açıkmış, sorun dediğim gibi.
Evet tahmin etmiştim ben sadece yazım hataları olduğundan konuya yabancı arkadaşlarda bakarsa yanlış bilgi edinmemeleri açısından yazmak istedim. Mantığını üstte hocam anlatmış zaten.