входное значение не увеличивается в этом коде, функция вызывает себя со значением 0? - PullRequest
0 голосов
/ 26 мая 2020

Everytime fun c вызывает себя со значением 0, значение i не увеличивается.

int f(n)
{
    if (n == 0)
        return 0;
    int sum = 0;
    for(int i = 0; i < n; i++)
    {
        sum += f(n-i);//func calls itself and everytime i is 0
    }
    return sum;
}

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Не уверен, хотите ли вы получить результат в виде суммы от 1 до прошедшего ввода, если да, попробуйте следующий код:

public static int fun(int n) {
    if (n == 0) {
      return 0;
    }
    return n + fun(n - 1);
}
0 голосов
/ 26 мая 2020

Ваша функция выполняет бесконечное l oop.
Предположим, вы вызываете f со значением 15 для n.
Затем функция снова вызовет f(15) (потому что вы начинаете свой l oop с i=0 и потому что 15-0=15).
Как мы видели выше, вызов f(15) вызывает .... f(15), который вызывает f(15), и так далее.

Решением (я не знаю, какова цель вашего кода) было бы инициализировать значение i в l oop как 1. Тогда по крайней мере вы не застряли бы в бесконечном l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...