Επισκέπτης Δημοσ. 29 Ιουνίου 2015 Δημοσ. 29 Ιουνίου 2015 Καλησπέρα στο Forum. Έχω μια απορία. Έχω την παρακάτω συνάρτηση , θέλω να βρω τι θα εμφανίσει. Όμως, όταν το τρέχω, μου εμφανίζει πάντα 0 για οποιαδήποτε στοιχεία του πίνακα αν του δώσω. Επίσης, στο χαρτί (όταν το κάνω με το χέρι), βρίσκω πάλι μηδέν για οποιαδήποτε input ! Κάνω κάτι λάθος τελικά; #include <stdio.h> #include <stdlib.h> int foo(int A[], int n){ int k; if(n){ k=foo(A,--n); if(k>A[n]) return k; return k*A[n]; } return 0; } int main() { int B[10]; int i; for(i=0;i<10;i++){ B[i]=rand(); } for(i=0;i<10;i++){ printf("B[ %d ] is : %d\n",i,B[i]); } printf("foo (B,10) %d\n",foo(B,10)); return 0; }
albNik Δημοσ. 29 Ιουνίου 2015 Δημοσ. 29 Ιουνίου 2015 To n θα γινει καποια στιγμή 0 (αφου γινεται n-- σε καθε κληση), δεν θα μπει στο if(n){...} και θα επιστρεψει 0 και μετα θα εχεις 0*Α[n]. Εσυ τι θες να επιστρεφει?
Επισκέπτης Δημοσ. 29 Ιουνίου 2015 Δημοσ. 29 Ιουνίου 2015 Δεν θέλω να επιστρέψει κάτι. Απλά ήταν άσκηση από εξεταστική και προσπαθώ να καταλάβω την λύση. Στο code blocks που την τρέχω μου βγάζει πάντοτε 0.
albNik Δημοσ. 29 Ιουνίου 2015 Δημοσ. 29 Ιουνίου 2015 Επειδη ειναι αναδρομη οπου καθε ορος πολλαπλασιαζεται με τον επομενο θα επρεπε να ειναι return 1; ωστε να εχεις μη μηδενικο αποτελεσμα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα