Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Επισκέπτης
Δημοσ.

Καλησπέρα στο 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;
}

Δημοσ.

To n θα γινει καποια στιγμή 0 (αφου γινεται n-- σε καθε κληση), δεν θα μπει στο if(n){...} και θα επιστρεψει 0 και μετα θα εχεις 0*Α[n].

Εσυ τι θες να επιστρεφει?

Επισκέπτης
Δημοσ.

Δεν θέλω να επιστρέψει κάτι. Απλά ήταν άσκηση από εξεταστική και προσπαθώ να καταλάβω την λύση. 

Στο code blocks που την τρέχω μου βγάζει πάντοτε 0.

Δημοσ.

Επειδη ειναι αναδρομη οπου καθε ορος πολλαπλασιαζεται με τον επομενο θα επρεπε να ειναι return 1;  ωστε να εχεις μη μηδενικο αποτελεσμα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...