Неудачная рекурсия

Я просто изучаю рекурсию в C. Я пытался получить факториал числа, используя этот подход. Но результат, который я получаю, просто 0!

Код: // факториал числа:

#include<stdio.h>
int factorial(int n) {
    if (n>0) {
    return n*factorial(n-1);
    }else{
        return 0;
    }
}
int main() {
    int n;
    printf("A number: ");
    scanf("%d", &n);
    int y = factorial(n);
    printf("%d", y);
    return 0;
}
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
4
0
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы возвращаете 0 из функции factorial, когда условие n>0 ложно. Умножение 0 на любое число даст ноль.

Вместо этого вы можете вернуть 1 в случае.

Ответ принят как подходящий

Обратите внимание, что вы возвращаете 0 всякий раз, когда n<=0, что означает, что когда ваша рекурсия доходит до последнего цикла, вы фактически умножаете выходные данные всех ваших предыдущих циклов, созданных в factorial(n-1);с 0. вместо этого, если вы находитесь в ситуации, когда n<=0

return 1

что укажет на конец вашего процесса рекурсии.

Другие вопросы по теме