Basitçe Sözdekod Soru

oy
1

Ben psuedocode yeniyim ve sorun tüm parçaları bir araya koyarak yaşıyorum:

Burada girdiler iki tam sayılan ve tam bir dizi olan bir işlev foo adında tanımıdır a[1] ... a[n].

1 Foo(k,m, a[1],...,a[n]) 
2   if (k < 1 or m > n or k > m) return 0 
3   else return a[k] + Foo(k+1,m,a[1],...,a[n])

Giriş tamsayı olduğunu varsayalım k=2ve m=5ve giriş dizisi, [5, 6, 2, 3, 4, 8, 2]. Foo hangi değeri döndürmektedir? Toplamıdır gösterim kullanılarak, Foo hesaplar için genel bir formül verir.

Bu, benim kafa zarar yapıyor. İşte ben bugüne kadar yaptık:

Satır 2 üç koşullu ifadeler vardır:

  • k <1 2 <1..this false // eğer varsa
  • 5 7 tadını değerlerin miktarından daha büyüktür, böylece, eğer m> n // Bu yanlış ise
  • k> m // 2> 5 ise, bu yanlış ise

Yani bu fonksiyon hattını görüntüler 3. Hat 3 diyor ki:

  • dönüş a[k]olduğunu a[2]Yani 6 alıp eklemek 6 dır dizinin, ikinci değer olan(2+1, 5, a[1].....,a[n])

Oraya doğru yaptıklarını mı? Eğer öyleyse, nasıl ne bileyim a[n]nedir? Bunu bulma olması gerekiyor? Bütün bu işlemlerin sonucunda ne olurdu?

Oluştur 03/09/2010 saat 04:44
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
2

Cevap basit: Bu fonksiyon sayesinde tüm sayıların toplamını bir [k], bir [k + 1], ... bir [m] döndürür.

Ne yaptığınızı şimdiye kadar doğrudur. "N" dizinin son elemanını anlamı sadece bir yer tutucudur. Girişinizi dizisi Yani eğer {5,6,2,3,4,8,2}, n = 7(senin yedi unsurları var neden) ve a[n] = 2.

Ama hepsi numaralar bir [k], toplamını döndürür neden [k + 1], ..., kendiniz için öğrenmek gerekir bir [m]. Sadece analizi ile devam edin. :)

Cevap 03/09/2010 saat 04:54
kaynak kullanıcı

oy
1

Böylece 6 alıp ekleyin (2 + 1, 5, bir [1] ....., bir [n])

6 alın ve eklemek Foo (2 + 1, 5, bir [1] ....., bir [n]). Bu bir özyinelemeli fonksiyon. Sen k = 3 ve m = 5 ile tekrar fonksiyonunu değerlendirmek zorundayız.

Cevap 03/09/2010 saat 04:56
kaynak kullanıcı

oy
0

Ben senin yalancı kod bana gerçek koduna benzeyen çünkü karıştı olduğunu düşünüyorum. Yanlış olabilir, ama biz düz İngilizce ifadeler kullanarak, farklı pseudocode yazma öğretilir.

Cevap 03/09/2010 saat 04:56
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more