【发布时间】:2016-09-25 14:25:43
【问题描述】:
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);
}
}
例如当我使用迭代方法时:
int Sum(int a[])
{
int sum =0;
for(int i=0;i<a,length;i++) sum += a[i];
return sum;
}
没有收到错误。在递归方法的情况下会发生什么?
【问题讨论】:
-
拜托拜托:不要对变量使用单字符名称(如果有的话:作为 for 循环中的计数器)。你在打字上节省的 1 秒……你后来在问自己“那件事又应该是什么意思”时花了(好吧,你在打字上节省了 1 秒,但你会花几分钟时间思考,保证!)跨度>
-
因为这个 a[2*i] 将解析为 int 而不是数组
-
谢谢 :) @GhostCat 。
-
提示没有。 2:不要把错误信息作为链接。错误消息包含文本,并且此文本...您可以在此处复制。说真的:你先读了这段文字。它通常会准确地告诉您您在程序中做错了什么!
-
@PavneetSingh 但为什么会这样呢?请回答:)。