Recursion Python Lab 29/08/23

PHOTO EMBED

Tue Aug 29 2023 06:06:59 GMT+0000 (Coordinated Universal Time)

Saved by @Astik

def fact(n):
    if(n<0):
        print("Wrong input")
    elif(n==0):
        return 1
    else:
        return n*fact(n-1)



def fibona(n):
    if(n<=2):
        return 1
    else:
        return fibona(n-1)+fibona(n-2)



######TOWER OF HANOI


######GCD of Two given number
def gcd(a,b):
    if(a==0 or b==0):
        print("Invalid numbers.")
        return
    elif(a%b==0):
        return b
    elif(b%a==0):
        return a
    else:
        if(a>b):
            return gcd(b,a-b)
        else:
            return gcd(a,b-a)

def sumdigi(n):
    if(n<0):
        print("Wrong input")
    elif(n==0):
        return 0
    else:
        rem=n%10
        return rem+sumdigi(n//10)


#####Reverse of a number
def reversenum(n,rev):
    if(n==0):
        return rev
    else:
        rem=n%10
        rev=rev*10+rem
        return reversenum(n//10,rev)



#decimal to binary
def DecToBin(n):
        if(n<0):
            print("Wrong Input")
        elif(n==0):
            return 0
        else:
            return n%2+10*DecToBin(n//2)

#decimal to octa
def DecToOc(n):
    if(n<0):
        print("Wrong input.")
    elif(n==0):
        return 0
    else:
        return n%8 + 10*DecToOc(n//8)

#decimal to hexa
def DecToHex(n):
    if(n<0):
        print("Wrong input.")
    elif(n==0):
        return ''
    else:
            rem=n%16
            if rem==10:
                res='A'
            elif rem==11:
                res='B'
            elif rem==12:
                res='C'
            elif rem==13:
                res='D'
            elif rem==14:
                res='E'
            elif rem==15:
                res='F'
            else:
                res=str(rem)
    return DecToHex(n//16)+res


#binary to decimal 
def BinToDec(n):
    if(n<0):
        print("Wrong input.")
    elif(n==0):
        return 0
    else:
        return (n%10) + 2*BinToDec(n//10)


#binary to hexa
def BinToDec(n):
    if(n<0):
        print("Wrong input.")
    elif(n==0):
        return 0
    else:
        return (n%10) + 2*BinToDec(n//10)

def DecToHex(n):
    if(n<0):
        print("Wrong input.")
    elif(n==0):
        return ''
    else:
            rem=n%16
            if rem==10:
                res='A'
            elif rem==11:
                res='B'
            elif rem==12:
                res='C'
            elif rem==13:
                res='D'
            elif rem==14:
                res='E'
            elif rem==15:
                res='F'
            else:
                res=str(rem)
    return DecToHex(n//16)+res


def sumNat(n):
        if(n<1):
            print("Not a natural number.")
        elif(n==1):
            return 1
        else:
            return n+sumNat(n-1)

print("1.Facorial\n2.Fibonaaci\n3.Sum of Digit\n4.Reverse Number\n5.Decimal to Binary\n6.Decimal to octa\n7.Decimal to Hexa\n8.Binary to decimal\n9.Binary to Hexa\n10.Sum of natural number\n11. GCD\n press 0 for Exit")
ch=20
while(ch!=0):
    ch=int(input("Enter your choice: "))
    if(ch==1):
        n=int(input("Enter number: "))
        print(fact(n))
    elif(ch==2):
        n=int(input("Enter digit: "))
        print(fibona(n))
    elif(ch==3):
        n=int(input("Enter number: "))
        print(sumdigi(n))
    elif(ch==4):
        n=int(input("Enter number: "))
        print(reversenum(n,0))
    elif(ch==5):
        n=int(input("Enter number: "))
        print("Binary is:  ",DecToBin(n))
    elif(ch==6):
        n=int(input("Enter number: "))
        print("Octal is:  ",DecToOc(n))
    elif(ch==7):
        n=int(input("Enter number: "))
        print("HexaDecimal is:  ",DecToHex(n))
    elif(ch==8):
        n=int(input("Enter binary number: "))
        print("decimal is:  ",BinToDec(n))
    elif(ch==9):
        n=int(input("Enter binary number: "))
        n1=BinToDec(n)
        print("HexaDecimal is:  ",DecToHex(n1))
    elif(ch==10):
        n=int(input("Enter count: "))
        print("Sum of natural number is:  ",sumNat(n))
    elif(ch==11):
        num1=int(input("Enter number 1: "))
        num1=int(input("Enter number 2: "))
        print("GCD: ",gcd(num1,num2))
    else:
        print("Invalid Choice,,, ")
content_copyCOPY

jy