Как сохранить количество раз, когда метод рекурсии вызывает себя с помощью бинарного дерева

81
15

Я не мог понять, как хранить количество раз, когда рекурсивный метод вызывает себя. Если бы кто-нибудь мог указать мне в правильном направлении, я бы очень признателен! Ниже мой код в нем у меня есть комментарий, где я думаю, что я ошибаюсь.

package module8_auriemma_assignment;
import java.util.*;

public class fibonacciTree{

Node root;

public void addNode(int key, int num) {
Node newNode = new Node(key, num);

if (root == null) {
root = newNode;
}
else {
Node focusNode = root;
Node parent;
while (true) {
parent = focusNode;
if (key < focusNode.key) {
focusNode = focusNode.leftChild;
if (focusNode == null) {
parent.leftChild = newNode;
return;
}
}
else
{
focusNode = focusNode.rightChild;
if (focusNode == null) {
// then place the new node on the right of it
parent.rightChild = newNode;
return; // All Done
}

}

}
}

}

public static void main(String[] args) {

fibonacciTree theTree = new fibonacciTree();

Scanner input = new Scanner (System.in);

System.out.println("Please enter an index");
System.out.println("I will compute your index Fibonacci numbers.");
System.out.println("I will compute numbers that do not exceed a billion");

int number;

int key;
key = 0;

for(number = input.nextInt(); number < 1000000; number++){

System.out.println(fibonacci(number));
theTree.addNode(key, number);

/*
I am not sure if I should be adding a new node everytime the
loop happens in the main class OR if I should be having it store
a node inside of the fibonacci method itself
*/

number++;
key++;

}

}

public static long fibonacci(int i)
{

if (i == 0) return 0;
if (i <= 2) return 1;

long fibTerm = fibonacci(i - 1) + fibonacci(i - 2);

if(fibTerm > 1000000000){
System.out.println("Number too large");

System.exit(0);
}
else{
return fibTerm;

}
return fibTerm;
}
}

,

package module8_auriemma_assignment;
class Node {
int key;
int num;

Node leftChild;
Node rightChild;

Node(int key, int num) {

this.key = key;
this.num = num;

}

@Override
public String toString() {

return num + " has the key " + key;

}

}

спросил(а) 2021-01-26T15:41:27+03:00 8 месяцев, 3 недели назад
1
Решение
121

fibonacci(int i) продолжает называть себя до тех пор, пока он не будет сведен к ряду 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +...

Решение - это также количество раз, когда метод вызывается. Если вы хотите узнать, сколько раз он был вызван, посмотрите на возвращаемое значение.

ответил(а) 2021-01-26T15:41:27+03:00 8 месяцев, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема