Использование рекурсии, чтобы найти сумму применимых целых чисел - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь взять целое число (X) и использовать рекурсию, чтобы найти сумму цифр, которая применяется к определенному условию вплоть до X. Например, если задано 10 и использовать условия, кратные 2 или 3, сумма будет5.

Я уже использовал разные циклы для решения проблемы и сейчас пытаюсь потренироваться с рекурсией.

       int sum(int n) {
           int totalSum;
           if (n==0)
            return 0;
           else {
               if ((n%2==0)||(n%3==0)){
                   totalSum+= sum(n-1);
                   return totalSum;
               }
               else {
                totalSum=sum(n-1);
                return totalSum;
               }
           }
        }

Я получаю либо ноль, либо невероятно большое число.

1 Ответ

3 голосов
/ 24 сентября 2019
totalSum+= sum(n-1);

не может быть правильным.Вы никогда не инициализировали totalSum, так как может быть правильно добавить что-то к нему?Даже если C автоматически инициализирует переменные, он, вероятно, инициализирует его как 0, так что это будет эквивалентно totalSum = sum(n-1);, что то же самое, что вы делаете, когда n равно , а не , кратное 2 или 3.

Обратите внимание, что ни одно из ваших условий ни к чему не добавляет текущую переменную итерации.Вы должны добавить n, а не totalSum:

totalSum = n + sum(n-1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...