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

αναδρομική συνάρτηση σε java


yincyun

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

Δημοσ.

καλημέρα... εχω μια αναδρομική συνάρτηση 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);

}

}

}

 

που είναι λάθος? :/

Δημοσ.

Καλημέρα με μια γρήγορη ματιά είδα ότι έχεις 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

Δημοσ.

μου βγάζει σφάλμα με βελάκι στο 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....

Δημοσ.

Έτσι θα σου δουλέψει!! Κάτσε όμως και μελέτησε τον κώδικα να δεις που έκανες λάθη!

 

>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;
       }
   }
}

Δημοσ.

λοιπόν είστε αρχηγοί... το math με το Math το παρατήρησα κι εγώ :o :Ρ είναι λίγο μεγαλούτσικο αλλά επειδή εν τέλει το έτρεξα θα παραδώσω το δικό μου στην εργασία

 

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;

}

}

}

 

οχι ότι διαφέρει και πολύ απο του παιδιού παραπάνω... :lol:

 

σας ευχαριστώ όλους άλλωστε αν δεν μου λέγατε για τη Math δε θα έβγαζα το πρόγραμμα :-)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...