# Practice Questions for Recursion | Set 7

• Difficulty Level : Medium
• Last Updated : 17 Jun, 2021

Question 1 Predict the output of the following program. What does the following fun() do in general?

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

## C++

 `#include ``using` `namespace` `std;` `int` `fun(``int` `n, ``int``* fp)``{``    ``int` `t, f;` `    ``if` `(n <= 2) {``        ``*fp = 1;``        ``return` `1;``    ``}``    ``t = fun(n - 1, fp);``    ``f = t + *fp;``    ``*fp = t;``    ``return` `f;``}` `int` `main()``{``    ``int` `x = 15;``    ``cout << fun(5, &x) << endl;` `    ``return` `0;``}`

## C

 `#include ` `int` `fun ( ``int` `n, ``int` `*fp )``{``    ``int` `t, f;` `    ``if` `( n <= 2 )``    ``{``        ``*fp = 1;``        ``return` `1;``    ``}``    ``t = fun ( n-1, fp );``    ``f = t + *fp;``    ``*fp = t;``    ``return` `f;``}` `int` `main()``{``    ``int` `x = 15;``    ``printf``(``"%d\n"``,fun(5, &x));` `    ``return` `0;``}`

## Java

 `import` `java.io.*;` `class` `GFG {``    ``static` `int` `fp = ``15``;``    ``static` `int` `fun ( ``int` `n)``    ``{``        ``int` `t, f;``     ` `        ``if` `( n <= ``2` `)``        ``{``            ``fp = ``1``;``            ``return` `1``;``        ``}``        ``t = fun ( n - ``1``);``        ``f = t + fp;``        ``fp = t;``        ``return` `f;``    ``}``     ``public` `static` `void` `main (String[] args)``    ``{``        ``System.out.println(fun(``5``));``    ``}``}``// This code is contributed by shubhamsingh10`

## Python3

 `fp ``=` `15``def` `fun ( n ):``    ``global` `fp``    ``if` `( n <``=` `2` `):``        ``fp ``=` `1``        ``return` `1``    ` `    ``t ``=` `fun ( n ``-` `1` `)``    ``f ``=` `t ``+` `fp``    ``fp ``=` `t``    ``return` `f` `# Driver code` `print``(fun(``5``))` `# This code is contributed by shubhamsingh10`

## C#

 `using` `System;`` ` `class` `GFG{``    ``static` `int` `fp = 15;``    ``static` `int` `fun ( ``int` `n)``    ``{``        ``int` `t, f;``    ` `        ``if` `( n <= 2 )``        ``{``            ``fp = 1;``            ``return` `1;``        ``}``        ``t = fun ( n - 1 );``        ``f = t + fp;``        ``fp = t;``        ``return` `f;``    ``}``    ` `    ``static` `public` `void` `Main ()``    ``{``        ``Console.Write(fun(5));``    ``}``}``// This code is contributed by shubhamsingh10`

## Javascript

 ``
Output
```5
```

The program calculates n-th Fibonacci Number. The statement t = fun ( n-1, fp ) gives the (n-1)th Fibonacci number and *fp is used to store the (n-2)th Fibonacci Number. The initial value of *fp (which is 15 in the above program) doesn’t matter. The following recursion tree shows all steps from 1 to 10, for the execution of fun(5, &x).

```                              (1) fun(5, fp)
/           \
(2) fun(4, fp)  (10) t = 5, f = 8, *fp = 5
/          \
(3) fun(3, fp)  (9) t = 3, f = 5, *fp = 3
/            \
(4) fun(2, fp)      (8) t = 2, f = 3, *fp = 2
/          \
(5) fun(1, fp)   (7) t = 1, f = 2, *fp = 1
/
(6) *fp = 1```

Question 2: Predict the output of the following program.

## C++

 `#include ``using` `namespace` `std;``void` `fun(``int` `n)``{``    ``if``(n > 0)``    ``{``        ``fun(n - 1);``        ``cout << n <<``" "``;``        ``fun(n - 1);``    ``}``}` `int` `main()``{``    ``fun(4);``    ``return` `0;``}` `// This code is contributed by shubhamsingh10`

## C

 `#include ` `void` `fun(``int` `n)``{``    ``if``(n > 0)``    ``{``        ``fun(n-1);``        ``printf``(``"%d "``, n);``        ``fun(n-1);``    ``}``}` `int` `main()``{``    ``fun(4);``    ``return` `0;``}`

## Java

 `import` `java.util.*;`` ` `class` `GFG{``static` `void` `fun(``int` `n)``{``    ``if``(n > ``0``)``    ``{``        ``fun(n - ``1``);``        ``System.out.print(n+``" "``);``        ``fun(n - ``1``);``    ``}``}` `public` `static` `void` `main(String[] args)``{``    ``fun(``4``);``}``}``// This code is contributed by Shubhamsingh10`

## Python3

 `def` `fun(n):``    ` `    ``if``(n > ``0``):``        ``fun(n ``-` `1``)``        ``print``(n,end``=``" "``)``        ``fun(n ``-` `1``)` `# driver code` `fun(``4``)` `# This code is contributed by shubhamsingh10`

## C#

 `using` `System;` `class` `GFG{``    ``static` `void` `fun(``int` `n)``    ``{``        ``if``(n > 0)``        ``{``            ``fun(n - 1);``            ``Console.Write(n+``" "``);``            ``fun(n - 1);``        ``}``    ``}``      ` `    ``static` `public` `void` `Main ()``    ``{ ``        ``fun(4);  ``    ``}``}` `// This code is contributed by shubhamsingh10`

## Javascript

 ``
Output
`1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 `

```                     fun(4)
/
fun(3), print(4), fun(3) [fun(3) prints 1 2 1 3 1 2 1]
/
fun(2), print(3), fun(2) [fun(2) prints 1 2 1]
/
fun(1), print(2), fun(1) [fun(1) prints 1]
/
fun(0), print(1), fun(0) [fun(0) does nothing]```