Please check whether the following code for tiling problem using recursion is correct:
Tiling problem using recursion
Base cases are not correct.
We have to find a recursive relation to tile a floor of size 4 x N given tile size is 1 x 4
When you keep the tile vertically, number of ways of tiling the remaining floor is f(n-1) as n-1 is the remaining width.
When you keep the tiles horizontally, number of ways of tiling remaining floor is f(n-4).
So total number of ways of tiling is the sum of both.
Recursive fn must be like this
// Recursive function to find number of ways to fill a n x 4 matrix
// with 1 x 4 tiles
int totalWays(int n)
{
if (n < 1)
return 0;//Because tiling not possible
if (n < 4)
return 1;//Because now you have only 1 way to tile and that is to tile vertically
if (n == 4)
return 2; //Because now you have 2 ways- either tile all vertically or tile all horizontally
// combine results of placing a tile horizontally and
// placing 4 tiles vertically
return totalWays(n - 1) + totalWays(n - 4);
}
Yes, now your code is correct
I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.
On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.