Reputation: 11
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
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
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