qiver
qiver

Reputation: 11

Recursive factorial error return-statement with a value, in function returning 'void' [-fpermissive]

I try to write a factorial using recursive function. What is wrong with this code? I get error return-statement with a value, in function returning 'void' [-fpermissive]

#include <iostream.h>

int factorial(int);

int factorial(int number)
{
    return number==0?1: number * factorial*(number - 1);
}

void main(void)
{
    int number;

    cout << "Please enter a natural number: ";
    cin >> number;
    if (number < 1)
        cout << "That is not a natural number.\n";
    else
        cout << number << " factorial is: " << factorial(number) << endl;
    return 0;
}

Upvotes: 0

Views: 3264

Answers (2)

barej
barej

Reputation: 1406

fix the code. main must be int and function argument should be entered immediately without * in between:

#include <iostream.h>

int factorial(int number)
{
    return number==0?1: number * factorial(number - 1);
}

int main(void)
{
    int number;

    cout << "Please enter a natural number: ";
    cin >> number;
    if (number < 1)
        cout << "That is not a natural number.\n";
    else
        cout << number << " factorial is: " << factorial(number) << endl;
    return 0;
}

Upvotes: 0

Shoe
Shoe

Reputation: 76300

The function main should return int, not void. Also void within parenthesis is useless in C++.

Use:

int main() {

or:

auto main() -> int {

Upvotes: 1

Related Questions