pharo中的递归方法产生#SubscriptOutOfBounds:8

时间:2017-10-07 11:31:54

标签: pharo

我在Pharo中创建了一个名为BinarySearchTreean的类,我实现了一个名为BinarySearchTree>> PreOrder和BinarySearchTree>> index

的方法

预购:myArray指数:位置

(myArray at: position) ~= -1 
ifTrue: [ 
       Transcript show: (myArray at: position).
        self Preorder: myArray index: (position * 2).
        self Preorder: myArray index: (position * 2) + 1.
    ].

然后我提供了这个数组#(90 60 95 50)索引1,在我的二叉树中进行PreOrder搜索,我使用数组实现,但它不起作用。 请帮忙......

1 个答案:

答案 0 :(得分:0)

#at:会在索引为< SubscriptOutOfBounds时发出信号0或大于数组的大小(Smalltalk集合是基于1的,即第一个索引是1,而不是0)。 8显然大于4(myArray的大小)。

开始时的检查永远不会评估为False,因为您的数组没有条目-1,因此每次都会评估条件块。

我无法确切地说出你的问题在哪里,因为你排除了所有真正感兴趣的代码。如果你补充一下,我可以告诉你更多。