Friday, July 21, 2017

சி மொழியில் ரிகர்சிவ் ஃபங்சன்(Recursive function)என்றால் என்ன?



 
பொதுவாக ஃபங்சன் என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட கட்டளை வரிகளின் தொகுப்பாகும்.இதற்கு தனியாக ஒரு பெயரிடுவோம். எங்கெல்லாம் அந்த வரிகளின் இயக்கம் தேவைப்படுகின்றதோ அங்கெல்லாம் அந்த ஃபங்சனின் பெயரை மற்றும் கூறி அழைத்தால் போதும்.

அந்த ஃபங்சனின் பெயரை மட்டும் கூறி அழைக்கலாம்  அல்லது ஒன்று அல்லது அதற்கு மேற்பட்ட பாராமீட்டர்களை அனுப்பலாம். அதே மாதிரியந்த ஃப்ங்சன் ஒரு குறிப்பிட்ட மதிப்பை திருப்பி அனுப்பலாம்.

(குறிப்பு:சி மொழியில் ஒரு ஃபங்சன் ஒன்றுக்கு மேற்பட்ட மதிப்பை திருப்பி அனுப்ப இயலாது.)

சி மொழியில் நிரலாளரால் எழுதப்படும் ஃபங்சன்கள் user defined function என்றழைப்படுகின்றது. Main ஃபங்சனில் இருந்து இந்த ஃபங்சன்களை அழைக்கலாம். அதே மாதிரி ஒரு யூசர் டிஃபைண்டு ஃபங்சனில் இருந்து மற்றொரு யூசர் டிஃபைண்டு ஃபங்சனை அழைக்கலாம்.

இப்பொழுது அதைக்காடிலும் ஒரு சுவாரஸ்யமான விஷயம் என்றால் ஒரு ஃபங்சனில் இருந்தவாறே அதேஃபங்சனை அழைக்கலாம். அவ்வாறு அழைக்கப்படும் ஃபங்சன்கள் ரிகர்ஸிவ் ஃபங்சன் என்றழைப்படுகின்றது

சான்று நிரல்:

#include <stdio.h>

int factorial(int);

int main()

{

    int n,fact;

    printf("enter a number to calculate factorial");

    scanf("%d",&n);

    fact=factorial(n);

    printf("factorial=%d",fact);

    return 0;

}

int factorial(int n1)

{

    if(n1<=1)

        return 1;

    else

        return n1*factorial(n1-1);

 

}

வெளியீடு:



மேலே உள்ள நிரலில் பயனாளரிடமிருந்து ஒரு எண் உள்ளீடு வாங்கப்படுகின்றது. உதாரணத்திற்கு 5. அந்த factorial என்கின்ற ஃபங்சனிற்கு அனுப்பபடுகின்றது.அது ஒன்று அல்லது அதற்கு கீழ்பட்ட எண் என்றால் மதிப்பு 1 திரும்பி அனுப்பப்படுன்றது. இல்லையென்றால் அந்த எண்ணிடமிருந்து ஒன்றை கழித்து அந்த மதிப்பு அதே ஃபங்சனுக்கு பாரா  மீட்டராக அனுப்பப்படுகின்றது.

        return n1*factorial(n1-1);

5*factorial(4);

5*4*factorial(3)

5*4*3*factorial(2)

5*4*3*2*factorial(1)

5*4*3*2*1=120

இவ்வாராக  நாம் அனுப்பும் எண்ணின் ஃபேக்டோரியல் கணக்கிடப்பட்டு அந்த மதிப்பு திருப்பி அனுப்பப்படுகின்றது.

                        -முத்து கார்த்திகேயன்,மதுரை.

 

ads Udanz

No comments:

Post a Comment