J'essaie de répondre au problème numéro 53 du projet Euler. Je prends une approche de force plutôt brute, mais il me semble que ma logique devrait trouver la bonne réponse, même si cela prend un certain temps. qu'est-ce que je fais de mal dans cette situation en plus d'être plutôt inefficace, c'est-à-dire que le compilateur revient avec une division ArithmeticException par zéro.ArithmeticException divide par zéro
import java.util.*;
public class problem53
{
public static int fact(int x)
{
int total = 0;
if(x != 0)
{
for(int i=(x-1);i>0;i--)
{
x = x*i;
total = x;
}
}
if(x==0)
total = 1;
return total;
}
public static int combo(int y,int z)
{
int end = 0;
if(y==0)
y=2;
if(z==0)
z=1;
if(y-z != 0)
{
end = fact(y)/(fact(z)*(fact(y-z)));
}
return end;
}
public static void main(String[]args)
{
int answer = 0;
List<Integer> sure = new ArrayList<Integer>();
for(int i=20;i<=100;i++)
{
for(int j=2;j<i;j++)
{
int ferNow = combo(i,j);
if(ferNow>=1000000)
sure.add(ferNow);
}
}
answer = sure.size();
System.out.println(answer);
}
}
Merci pour l'aide à l'avance.
Votre 'fait()' est cassé. Il retournera '0' pour' fact (1) '. –