# factorial

Status
Not open for further replies.

##### In the zone
hi,
how to find factorial of a number(from 1 to 10) without using,
>loop statements like for, while, do while.
>conditional operators like if, case.
>arithmetic operators like + , - , * , % , /, ++, --.??!!

is there anyway to do so using logical operators.!!

##### AFK
Why NOT use a loop ?

#### sakumar79

##### Technomancer
But even for recursion, we need both if statement and * operators...

Arun

OP

##### In the zone
i found this question in a C aptitude paper..!! its just you are given these constraints and to find the solution such that it satisfies them...!!

#### Liverpool_fan

##### Sami Hyypiä, LFC legend
But even for recursion, we need both if statement and * operators...

Arun

Yeah you are right.

I guess I don't have any idea then...

I hope someone comes with an answer, I am really curious of the answer, assuming the question is not wrong...

#### dearboy009

##### Right off the assembly line
In which programming language do you want answer?

#### Liverpool_fan

##### Sami Hyypiä, LFC legend
In which programming language do you want answer?

i found this question in a C aptitude paper..!! its just you are given these constraints and to find the solution such that it satisfies them...!!
.

OP

##### In the zone
i came up with 2 solutions, one of which is quite silly.
1)
Code:
``````#include<stdio.h>

int factorial(int n)
{
int a[] = {1,2,6,24,120,720,5040,40320,362880,3628800};
return a[n-1];
}
int main()
{
int num;
printf("Enter a number between 1 and 10: ");
scanf("%d",&num);
printf("%d",factorial(num));
}``````

this might be funny..!![]

2)
Code:
``````#include <stdio.h>

{
int t1, t2, ab, bb, cb=0, orb=1, ans=0;

do {
t1 = a >> 1;
t2 = t1 << 1;

if (a==t2) ab=0; else ab=1;

t1 = b >> 1;
t2 = t1 << 1;

if (b==t2) bb=0; else bb=1;

if (ab==1 && bb==1) {
if (cb==1) ans=ans | orb;
cb = 1;
}

if ( ab!=bb ) {
if (cb==0) ans = ans | orb;
}

if (ab==0 && bb==0) {
if (cb==1) {
ans = ans | orb;
cb=0;
}
}

orb = orb << 1;
a = a >> 1;
b = b >> 1;

} while (a!=0 || b!=0);

if (cb==1) ans = ans | orb;

return ans;
}

int multiply(int x,int y)
{
int result = 0, i = 0 , j=0;

return result;

}

int factorial(int x)
{
if(x==1)
return 1;
else
return multiply(x,factorial(x-1));

}

int main()
{
int x;
printf("Enter a number between 0 and 10: ");
scanf("%d" , &x);
printf("\nFactorial: %d\n" , factorial(x));
return 0;
}``````

in the second solution i have used if conditions and while loops but no arithmetic operators involved.!

#### sam_52136

##### Sammy..
The first one is too good man..!
but what if some one asks you for factorial of 20 ?
hehe..

OP