Saturday, April 23, 2011

Calculating Factorial Using Recursion in C

Factorial: its a mathematical function defined as 4!=4x3x2x1=120. Yes just like that. It will multiply all numbers before the given numbers till 1(Worst definition ever).

Calculating Factorial Using For Loop in C

Factorial: its a mathematical function defined as 4!=4x3x2x1=120. Yes just like that. It will multiply all numbers before the given numbers till 1(Worst definition ever).

Calculating LCM of two Numbers in C

LCM : least common multiplier, is a number to which given two numbers can divide exactly (and of course there are a lot of numbers like that , but LCM is the least one of them). E.g. given two numbers 12,15 these numbers can divide 60,120,180 but LCM is 60 as its the least.

Friday, April 22, 2011

Checking if String is Palindrome in C Recursively

Palindrome String :  are those string which is same if you read it backwards."MADAM" or "AABBCCCCBBAA" are palindrome strings. But "ABBC" is not

Checking if String is Palindrome in C

Palindrome String : are those string which is same if you read it backwards."MADAM" or "AABBCCCCBBAA" are palindrome but "TATA" is not. Its a good practice for starters to check their recursion knowledge with this kind of problem. As we know this can be implemented in recursive way too. but a non recursive way will always compare the first letter of the string to the last letter.
Method : checking if string is palindrome in C can be done by creating a function. The Function checkPalindromeStr uses 2 char pointers start and end . Assign first pointer to start char and other to last char. Then we start matching start pointer to end pointer, when they don't match the given string cant be palindrome so we return 0. else we continue by increasing start and decreasing end  till start crosses end pointer. At that point the string will be palindrome and we return 1.

Code:


#include<stdio.h>
#include<string.h>//for strlen function
int checkPalindromeStr(char* p)
{
    int l;
    char* start;//to denote starting char of string
    char* end;// to denote end of string
    l=strlen(p);    //get length of string;
    start=p;//set start to first char of string
    end=p+l-1;//move end pointer to end char of string
    while(start<=end)
    {
        if(*start==*end)
        {
            start++;
            end--;
        }
        else
        {
            return(0);//string is not palindrome
        }
    }
    return(1);
}
void main()
{
    char* s="aabaa";
    if(checkPalindromeStr(s))
    {
        printf("\n String is Palindrome\n");
    }
    else
    {
        printf("\n String is not Palindrome\n");
    }
}
the same problem can be done using recursion.Follow my this post.
http://programs-in-c-plus-plus.blogspot.com/2011/04/checking-if-string-is-palindrome-in-c_22.html

Thursday, April 21, 2011

HCF/GCD in C using recursion

HCF: Highest common factor can be calculated using recursive method. HCF is also called as GCD (greatest commomn divisor).

Calculating HCF/GCD of two Numbers in C non recursive

HCF: Highest common factor can be calculated using long division method. HCF is also called as GCD (greatest commomn divisor).
Method: Two numbers x and y and passed to the function HCF which calculates HCF and returns it.
we keep on diviing x with y untill it completely divides x. If it does y becomes HCF, if not then we replace x with the remainder and y with x.
Code:

#include<stdio.h>
int HCF(int x, int y)
{
    int tmp;
    if(x<y)
    {
        tmp=x;
        x=y;
        y=tmp;//using tmp to swap x and y    
    }    
    while(x%y!=0)
    {
        tmp=x%y; //using tmp to store remainder
        y=x;
        x=tmp;    
    }
    return(y);
}
int main()
{
    int k;
    k=HCF(18,24);    
    printf("\n HCF=%d",k);
}