2013-04-22 92 views
0

我想爲用戶輸入的數字n的歐拉數e,邏輯部分有問題,我似乎無法得到輸入2時的正確答案2.5,相反,我得到2.事實上,無論輸入是什麼,我總是得到2的答案。問題在於歐勒方法,因爲階乘打印出正確的答案。 這裏是代碼。遞歸歐拉的邏輯問題

import java.util.*; 

public class pract5ex3 { 
    public static int fact (int n){ 
    if (n==0 || n==1){ 
      return 1; 
    } 
    else { 
    return n*fact(n-1); 
    } 

} 
public static double constantRec(int n){ 
    if (n == 0){ 

    return 1; 
    } 
    else { 

    return 1/fact(n)+constantRec(n-1); 
    } 
} 

public static void main (String []args) { 
    Scanner s= new Scanner (System.in); 
    System.out.println("enter number"); 
    int n =s.nextInt(); 

    int factorial = pract5ex3.fact(n); 
    double euler = pract5ex3.constantRec(n); 
    System.out.println(factorial); 
    System.out.println(euler); 
} 

}

回答

2

表達式1/fact(n)進行整數除法,如果因子大於1,則它將產生零。只需將其更改爲1.0/fact(n)即可。