# Finding greatest power devisor using recursion?

The question asks me to find the greatest power devisor of (number, d) I found that the function will be like that:

```number % d^x ==0
```

I’ve done so far using for loop:

```int gratestDevisor(int num, int d){
int p = 0;
for(int i=0; i<=num; i++){
//num % d^i ==0
if( (num % (int)pow(d,i))==0 )
p=i;
}

return p;
}
```

I’ve tried so much converting my code to recursion, I can’t imagine how to do it and I’m totally confused with recursion. could you give me a tip please, I’m not asking you to solve it for me, just some tip on how to convert it to recursion would be fine.

## Answer

Here is a simple method with recursion. If `d`divides `num`, you simply have to add 1 to the count, and divide `num` by `d`.

```#include <stdio.h>

int greatestDevisor(int num, int d){
if (num%d) return 0;
return 1 + greatestDevisor (num/d, d);
}

int main() {
int num = 48;
int d = 2;
int ans = greatestDevisor (num, d);
printf ("%dn", ans);
return 0;
}
```