Answer:
I am writing a Python program. Let me know if you want the program in some other programming language.
#definition of function d2x which takes two parameters v: which is a non #negative integer and x which is an integer between 2 and 9. this method #returns string of digits that represents the base-x representation of v
def d2x(v,x):
remainder = v%x
if v<=1:
return str(v)
else:
return str(d2x(v//x,x)) + str(remainder)
v= int(input("Enter a non negative integer: "))
x= int(input("Enter an integer between 2 and 9: "))
print(d2x(v,x))
Explanation:
I will explain the code line by line.
def d2x(v,x) This is the definition of function d2x which takes two parameters v: which is a non negative integer and x which is an integer between 2 and 9. This method returns string of digits that represents the base-x representation of v.
Now lets take an example to understand the working of this function.
Suppose the value of v = 10 and x = 2.
remainder = v%x takes the mod of v and x which returns the remainder of the division of v by x. So v%x = 10 % 2 = 0. So remainder = 0.
if v<=1 This if condition checks if the value of v is less than or equal to 1. This is false because v=10 and 10 is greater than 1. If v is 1 or less than return str(v) will return the value of v as it is i.e. 10.
Since the IF condition is false so the else part will execute which has the following statement: return str(d2x(v//x,x)) + str(remainder)
This calls the d2x function recursively. Here v is divided by x successively until the quotient of v divided by x is 0. On each successive division, the remainder is the new most significant digit. In v//x, the double slash is called floor division or integer division which we use as both v and x are integers. So using recursion the above statement becomes:
str(d2x(v//x,x)) + str(remainder)
str(d2x(10//2,2) + str(0)
d2x(5,2) + (0)
Now d2x will again be called recursively to perform the division and this successive division continues until quotient of v divided by x is 0. Here str() method is used returns the result in the form of string. So v%x is the number which is added to the end of resultant number. v//x is the recursive portion which keeps using the answer of the previous binary number. This means 10 in base 2 calls convert(5,2), then adds 0 at the end. So when v//x=5 and v%x=0 So the answer is 1010.
At the end v= int(input("Enter a non negative integer: "))
x= int(input("Enter an integer between 2 and 9: ")) these two statement wills take integer input from user and print(d2x(v,x)) calls d2x method and print the result.