を見つけてください。ここに私のコードです:あなたのコードのロジックに誤りがない再帰階乗を見つけるためのコードが機能しません。誰かがエラー
import java.util.*;
import java.lang.*;
class Main
{
static String fib(int f)
{
if(f!=1)
return ""+(f*(Integer.parseInt(fib(f-1))));
else
return "1";
}
public static void main(String[] args) throws java.lang.Exception
{
Scanner sc= new Scanner(System.in);
int f= sc.nextInt();
int a[]=new int[f];
int i;
for(i=0;i<f;i++)
a[i]=sc.nextInt();
for(i=0;i<f;i++)
System.out.println(fib(a[i]));
}
}
正確には動作しません。階乗は非常に大きくなり、整数範囲を非常に簡単に超えている可能性があることに注意してください。代わりにダブルスを使用してください。また、あなたのコードは非常に遅く実行されるかもしれません。そしてなぜあなたは弦を返すのですか?そのまま番号を返してください! –
あなたは達成しようとしている数字の大きさは?大量のための階乗を生成しながら、実装のストレージとロジックについてのすべてです –
私は50のような大きな数値のための正しい出力を得ていません。それは小さな数字のためにうまくいきます。 factorialsが非常に大きく、出力がintまたはlongの範囲を超えてしまう可能性があるため、Stringを返します。 – Reconnect