首页 > 解决方案 > 计算java中的递归调用次数

问题描述

我编写了一段 Java 代码来在整数列表中查找整数

    static int search(int x, List a) {
       if (a.isEmpty()) {

           throw new IllegalStateException("integer not in list");
       }
           if (x == a.getHead()) { 

           return x;
       }
       return search(x, a.getTail());
   }}

但我想要做的不是返回 X 的值,而是返回它在列表中的位置。因此,例如,如果在 x = 5 和 a = 1、2、3、4、7、5 中,那么我想返回 6。但我不知道如何计算递归调用的数量。有什么线索吗?

标签: javarecursion

解决方案


由于您希望它是基于 1 而不是基于 0,因此您可以1 + search(x, a.getTail())在递归调用中返回(这样您将计算调用该方法的次数,即当前的 ( 1) 加上,递归地,所有其他)。

然后当你找到元素时,你可以返回 0。


推荐阅读