Απλά Ψευδοκώδικα Ερώτηση

ψήφοι
1

Είμαι νέος στο psuedocode, και είμαι έχοντας πρόβλημα βάζοντας όλα τα κομμάτια μαζί:

Εδώ είναι ο ορισμός μιας συνάρτησης που ονομάζεται foo των οποίων οι είσοδοι είναι δύο ακέραιοι και μια σειρά ακεραίων 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])

Ας υποθέσουμε ότι οι ακέραιοι εισόδου είναι k=2και m=5και η συστοιχία εισόδου περιέχει [5, 6, 2, 3, 4, 8, 2]. Τι αξία έχει επιστρέψει Foo; Χρησιμοποιώντας άθροιση σημειογραφία, δίνουν ένα γενικό τύπο για το τι υπολογίζει Foo.

Αυτό και μόνο κάνει κακό κεφάλι μου. Εδώ είναι αυτό που έκανα μέχρι τώρα:

Η γραμμή 2 έχει τρεις όρους δηλώσεις:

  • Αν k <1 // αν 2 <1..this είναι ψευδής
  • Αν το m> n // αν 5 είναι μεγαλύτερη από την ποσότητα των αξιών στον πίνακα, η οποία είναι 7, έτσι αυτό είναι ψευδές
  • Αν k> m // αν 2> 5, αυτό είναι λάθος

Έτσι, η λειτουργία αυτή θα εμφανίσει γραμμή 3. Γραμμή 3 λέει:

  • επιστροφή a[k]η οποία είναι a[2]ποια είναι η δεύτερη αξία του πίνακα, η οποία είναι 6. Έτσι, ρίξτε 6 και προσθέστε το στο(2+1, 5, a[1].....,a[n])

Είναι ό, τι έχω κάνει σωστό εκεί πάνω; Αν ναι, πώς θα ξέρω τι a[n]είναι; Είμαι υποτίθεται ότι πρέπει να βρουν αυτό; Ποιο θα ήταν το τελικό αποτέλεσμα όλων αυτών;

Δημοσιεύθηκε 03/09/2010 στις 04:44
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Απλή απάντηση: ότι επιστρέφει το άθροισμα όλων των αριθμών a [k], το [k + 1], ... ένα [m].

Αυτό που κάνετε είναι σωστό μέχρι τώρα. Το «η» είναι απλώς ένα σύμβολο κράτησης θέσης που σημαίνει το τελευταίο στοιχείο της συστοιχίας. Έτσι, εάν σειρά εισόδου σας είναι {5,6,2,3,4,8,2}, n = 7(προκαλέσει σας έχει επτά στοιχεία), και a[n] = 2.

Αλλά γιατί επιστρέφει το άθροισμα όλων των αριθμών a [k], το [k + 1], ... ένα [m], θα πρέπει να μάθετε για τον εαυτό σας. Απλά συνεχίστε με την ανάλυσή σας. :)

Απαντήθηκε 03/09/2010 στις 04:54
πηγή χρήστη

ψήφοι
1

Πάρτε λοιπόν 6 και προσθέστε το στο (2 + 1, 5, α [1] ....., α [n])

Πάρτε 6 και προσθέστε το στο Foo (2 + 1, 5, α [1] ....., α [n]). Είναι μια αναδρομική συνάρτηση. Θα πρέπει να αξιολογηθεί η λειτουργία και πάλι με k = 3 και m = 5.

Απαντήθηκε 03/09/2010 στις 04:56
πηγή χρήστη

ψήφοι
0

Νομίζω ότι βρίσκονται σε σύγχυση, επειδή ψευδοκώδικα σας μοιάζει με πραγματικό κώδικα για μένα. Μπορεί να κάνω λάθος, αλλά είμαστε διδάσκονται να γράψουν ψευδοκώδικα με διαφορετικό τρόπο, χρησιμοποιώντας απλά Αγγλικές φράσεις.

Απαντήθηκε 03/09/2010 στις 04:56
πηγή χρήστη

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