Нахождение числа Кришнамурти с помощью C - PullRequest
0 голосов
/ 27 февраля 2020

Я просто хочу знать, что для нахождения числа Кришнамурти мы должны сначала найти факториал цифр, а затем сложить эти числа. (например, 1! + 4! + 5! = 145).

Итак, ниже приведен мой код, и я применил там факториальную функцию. Но вывод не приходит в пользу (145 не кри ...).

    #include <stdio.h>
#include <stdlib.h>

void main()
{
    int digit,factorial = 1, temp, input, sum = 0;
    printf("Enter a Number:\n");
    scanf("%d",&input);
    int Factorial(int digit){

         factorial = factorial*digit;
         return 0;
    }
    temp = input;
    while(temp>0){
        digit = temp%10;
        temp = temp/10;
        sum = sum + Factorial(digit);
    }
    if(sum==input){
        printf("%d is a Krishnamurthy Number",input);
    }
    else{
        printf("%d is not a Krishnamurthy Number",input);
    }


}

Я сделал что-то не так в logi c, или объявлении функции или определении? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 февраля 2020

Ваша факторная функция не выполняется правильно. означает факториал, умножение всех цифр, начиная с n до 1 -

(n-1) * (n-2) * ... * (n)

но ваша функция не дает желаемого результата, который вы хотите.

int Factorial(int digit){
     factorial = factorial*digit;
     return 0;
}

вам нужно изменить эту функцию, чтобы получить факториальное значение числа, вы можете либо перебрать al oop до единицы, либо использовать рекурсивный подход, чтобы получить факториал.

int Factorial(int digit){
     int result = 1;
     for(int i=n; i>=1; i--){
        result *= i;
     }
     return result;
}

или

int Factorial(int digit) {
    if(n <= 1) return digit;

    return digit * Factorial(digit-1);
}

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

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