What is the output of the following program

#include

int toronto (int x)

{

int w;
if (x == 0) w = 1; else w = toronto (x-1);
return (w);
}
int main (void)
{
int a = 2;
printf ("%d", toronto (a));
return (0); }

a. 0
b. 1
c. 2
d. -1
e. none of these



Sagot :

Answer:

The output is 1

Explanation:

Analysing the flow of program (We start from the main method)

The main begins here

int main (void) {

This line declares a as integer and also initializes it to 2

int a = 2;

This line passes 2 to the function names toronto and also prints the result of the function

printf ("%d", toronto (a));

return (0); }

The toronto function begins here.

Note that the function receives 2 as its argument and this is saved in variable x

int toronto (int x) {

This declares w as integer

int w;

If x is 0, w equals 1

if (x == 0) w = 1;

If otherwise

else

This reduces x by 1 and performs a recursion

w = toronto (x-1);

return (w);

}

Because of the structure of the if condition in the toronto function, the function will be repeated until x is 0.

And when x = 0; w = 1

This returns w (i.e. 1) back to the main function where 1 is printed as the output

return (w);