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 ddivides 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;
}