+ 1
What is the output of this and how?
int foo(int x){ if(x<=1) return 1; return foo(x-1)*x; } int main(){ cout<<foo(4); }
4 Antworten
+ 2
This will return 4! = 24
This is an example of recursive function, which means that it calls itself.
So here is how that works:
Foo(4) is called from main
Foo(3) is called from Foo(4)
Foo(2) is called from Foo(3)
Foo(1) is called from Foo(2)
In Foo(1) X==1 so that function returns 1 back to foo(2)
Then foo(2) returns 1*2=2 to foo(3)
Foo(3) returns 2*3=6 to foo(4)
Foo(4) returns 6*4=24 back to main function where it gets printed.
+ 2
It's like doing (3 x 2 x 1) x 4
When the recursion base case is reached (<x> <= 1) it returns 1.
Before it did, it does multiplication of number sequence - 3 then 2
Recursion is indeed tricky to explain though. Hope I wasn't mistaken ...
+ 2
Ok thank u for the explanation 👍