如何找到递归算法的函数?

时间:2017-09-27 04:37:15

标签: arrays function recursion analysis

我的任务是“检查下面的代码并派生一个与精确总数相对应的函数g(n) 调用方法moreMystery后打印的整数。“

我的问题是如何找到一个依赖于数组长度的函数?我想看看答案,但对我来说更重要的是逐步解决问题的答案。

public void moreMystery ( int [] data ) {
int n = data.length;                  // find the length of the array
moreMysteryContinued (data, n - 1);
}


private void moreMysteryContinued ( int [] data , int i ) {
  if ( i >= 0 ) {
    System.out.print(data[i]);
    moreMysteryContinued(data, i - 1);
    moreMysteryContinued(data, i - 1);
 }
}

1 个答案:

答案 0 :(得分:0)

首先,我接受了print语句计数,并尝试从中导出一个公式。

2^4 -1 = 16 -1 = 15
2^3 -1 = 8 - 1 = 7
2^2 -1 = 4 - 1 = 3

因此,打印量的公式应为2 ^ n-1。

我将尝试解释如何通过代码找到公式。

对于每次调用moreMysteryContinued,它将生成2个以上的打印语句。因此,对于n次调用moreMysteryContinued,将会有2 ^ n个打印语句。我不完全确定-1进来的地方但基于计算它2 ^ n-1是整数打印的公式