package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.IOException;
public class TreeOperations {
public static int minDepthBT(int[] a, int i)
{
if((i<1)|| (i<a.length))
return 0;
int x = minDepthBT(a[2*i],(2*i));
int y = minDepthBT(a[2*i+1],(2*i +1));
if(y==0) return y+1;
else if(x==0) return x+1;
return Math.min(x,y);
}
public static void main(String[] akjhk) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out,true);
int n = Integer.parseInt(br.readLine());
int a[] = new int[n];
String s[] = br.readLine().split(" ");
for(int i=0;i<n;i++)
{
a[i] = Integer.parseInt(s[i]);
}
int depth = minDepthBT(a,1);
out.println(depth);
}
}
上記のコードでは、エラーは2つの写真oneとtwoに表示されています。Javaでは、再帰的メソッドに配列を渡すと、エラーが発生します。
int Sum(int a[])
{
int sum =0;
for(int i=0;i<a,length;i++) sum += a[i];
return sum;
}
エラーが受信されない:
Iは、例えば、反復法を使用
。再帰的メソッドの場合はどうなりますか?
お願いします。変数には1文字の名前を使用しないでください(forループのカウンタとして)。あなたが入力した時間を節約して1秒...あなたが "それが何を意味するのか"を聞くときに後で過ごしたのです。(まあ、入力に1秒を節約しましたが、思考には数分を費やして保証します!) – GhostCat
cuzこれは[2 * i]は配列にないintに解決されます –
ありがとう:) @GhostCat。 – zerobyzero