yincyun Δημοσ. 16 Οκτωβρίου 2010 Δημοσ. 16 Οκτωβρίου 2010 καλημέρα... εχω μια αναδρομική συνάρτηση an=(4*((a-1)^2)-1)/a(n-1) όπου n και n-1 δείκτες... και δίνετε αρχική τιμή α0=1 (το 0 δείκτης).. και ζητάει να γίνει πρόγραμμα σε java που να βρήσκει την τιμή του n-οστού όρου με n>1... το πρόγραμμα που έχω κάνει... import java.util.*; public class anadromiki { public static void main(String[] args){ int num,fact; Scanner number=new Scanner(System.in); System.out.print("enter the intenger number : "); num=number.nextInt(); if (num<0){ System.out.println("error : number > 0"); } else{ fact=anad(num); System.out.println(fact); } } static int anad (int n) { int a; if (n==0){ return 1; } else{ return (4*(anad(n-1)^2) - 1)/anad(n-1); } } } που είναι λάθος? :/
nojipa Δημοσ. 16 Οκτωβρίου 2010 Δημοσ. 16 Οκτωβρίου 2010 Καλημέρα με μια γρήγορη ματιά είδα ότι έχεις 2 λαθάκια. 1) To fact και η αναδρομική συνάρτηση καλό να είναι τύπου double 2) Στην συνάρτηση anad όταν κάνεις return (4*(anad(n-1)^2) - 1)/anad(n-1); Αντί για ^ χρησιμοποίησε την συνάρτηση της Java: Math.pow(x,y) όπου χ = anad(n-1) και y = 2
yincyun Δημοσ. 16 Οκτωβρίου 2010 Μέλος Δημοσ. 16 Οκτωβρίου 2010 μου βγάζει σφάλμα με βελάκι στο math :S τι να κανω??? δε τρέχει με τίποτα..... import java.util.*; import java.math.*; public class anadromiki { public static void main(String[] args){ int num,fact; Scanner number=new Scanner(System.in); System.out.print("enter the intenger number : "); num=number.nextInt(); if (num<0){ System.out.println("error : number > 0"); } else{ fact=anad(num); System.out.println(fact); } } static int anad (int n) { int a; if (n==0){ return 1; } else{ return (4*(math.pow(anad(n-1),2)) - 1)/anad(n-1); } } } πλέον η μορφή με το math....
computeras13 Δημοσ. 16 Οκτωβρίου 2010 Δημοσ. 16 Οκτωβρίου 2010 Έτσι θα σου δουλέψει!! Κάτσε όμως και μελέτησε τον κώδικα να δεις που έκανες λάθη! >import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO code application logic here int num = 0; double fact = 0; Scanner number=new Scanner(System.in); System.out.print("enter the intenger number : "); num=number.nextInt(); if (num<0) System.out.println("error : number > 0"); else fact=anad(num); System.out.println(fact); } static double anad(int n){ if(n==0) return 1; else{ double temp = anad(n-1); return (4* Math.pow(temp, 2))-1/temp; } } }
RubiksCube Δημοσ. 16 Οκτωβρίου 2010 Δημοσ. 16 Οκτωβρίου 2010 Πρέπει να γράψεις Math.pow(x,y) και όχι math.pow(x,y). Επίσης όπως σου είπαν και άλλοι, η συνάρτηση αυτή επιστρέφει double και όχι int.
yincyun Δημοσ. 16 Οκτωβρίου 2010 Μέλος Δημοσ. 16 Οκτωβρίου 2010 λοιπόν είστε αρχηγοί... το math με το Math το παρατήρησα κι εγώ :Ρ είναι λίγο μεγαλούτσικο αλλά επειδή εν τέλει το έτρεξα θα παραδώσω το δικό μου στην εργασία import java.util.*; import java.math.*; public class anadromiki { public static void main(String[] args){ double num,fact; Scanner number=new Scanner(System.in); System.out.print("enter the an number you want for recurrence relation :\n an=(4*(a(n-1)^2)-1)/a(n-1) with n,n-1 points : "); num=number.nextInt(); if (num<0){ System.out.println("error : number > 0"); } else{ fact=anad(num); System.out.println("solution is : " + fact); } } static double anad (double n) { double a; if (n==0){ return 1; } else{ a = anad(n-1); return (4*(Math.pow(a,2.0)) - 1)/a; } } } οχι ότι διαφέρει και πολύ απο του παιδιού παραπάνω... σας ευχαριστώ όλους άλλωστε αν δεν μου λέγατε για τη Math δε θα έβγαζα το πρόγραμμα
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.