Bu, my previous question izindir. Her Fibonacci numarası için fib
yönteminin çağrılmasından beri Fibonacci sayılarını hesaplamak için aşağıdaki yöntem verimsizdir ve her çağrıldığında yeni bir akış oluşturur. Öte yandan (here olduğu gibi) kuyruk özyinelemeli yöntem üzerindeScala'da Akımlar oluşturmak için özgün yöntemler
def fib:Stream[Int] = Stream.cons(1, Stream.cons(1, (fib zip fib.tail) map {case (x, y) => x + y}))
oldukça verimli görünüyor ve Şimdi Streams oluşturmak özyinelemeli yöntemler verimli olduklarını bitiriyorum O(1)
def fib(a:Int, b:Int):Stream[Int] = Stream.cons(a, fib(b, a+b));
her Fibonacci sayısını hesaplar eğer ve sadece ise bunlar özyinelemelidir. Doğru mu?
Her iki örnek de yineleyici bir kuyruktur. –
@ DanielC.Sobral 2. uygulamanın neden her bir Fibonacci numarasını hesapladığını açıklayabilir misiniz? O (1) 'de, ancak 1’i' O (N) '' – Michael
Oops’de özür dilerim… İlkinden bahsediyordum .. Yorum yazmama izin ver ... –