#include <stdio.h>
/* Function prototypes */
long int calculate_power (int number, int power);
/******************************************************/
/* Function: calculate_power */
/* */
/* Overview: Raises an integer to a positive integer */
/* power. */
/* */
/* Parameters: number - a integer */
/* power - a positive power to raise */
/* */
/* Written by: Timothy Niesen */
/* */
/* Date Written: 10/22/91 */
/******************************************************/
long int calculate_power (int number, int power)
{
long int result = 1; /* the result of number raised to power */
/* anything to the zero power is 1 */
if (power == 0)
return(result);
else
{
/* Here is the recursive call ... function calling itself */
result = number * calculate_power(number, power - 1);
} /* else */
return (result); /* to calling function */
} /* calculate_power */
int main (void)
{
/* Call this function with 4 different arguments */
printf("Passed with 5,0 is %li\n", calculate_power
(5,0)); printf("Passed with 5,1 is %li\n", calculate_power
(5,1)); printf("Passed with 5,2 is %li\n", calculate_power
(5,2)); printf("Passed with 5,3 is %li\n", calculate_power
(5,3));
return(0);
} /* main */
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiBGdW5jdGlvbiBwcm90b3R5cGVzICovCmxvbmcgaW50IGNhbGN1bGF0ZV9wb3dlciAoaW50IG51bWJlciwgaW50IHBvd2VyKTsKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEZ1bmN0aW9uOiBjYWxjdWxhdGVfcG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIE92ZXJ2aWV3OiBSYWlzZXMgYW4gaW50ZWdlciB0byBhIHBvc2l0aXZlIGludGVnZXIgICovCi8qICAgICAgICAgICBwb3dlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIFBhcmFtZXRlcnM6ICBudW1iZXIgLSBhIGludGVnZXIgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICBwb3dlciAgLSBhIHBvc2l0aXZlIHBvd2VyIHRvIHJhaXNlICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIFdyaXR0ZW4gYnk6ICBUaW1vdGh5IE5pZXNlbiAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIERhdGUgV3JpdHRlbjogMTAvMjIvOTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpsb25nIGludCBjYWxjdWxhdGVfcG93ZXIgKGludCBudW1iZXIsIGludCBwb3dlcikKewogICAgbG9uZyBpbnQgcmVzdWx0ID0gMTsgICAvKiB0aGUgcmVzdWx0IG9mIG51bWJlciByYWlzZWQgdG8gcG93ZXIgKi8KICAgCiAgICAvKiBhbnl0aGluZyB0byB0aGUgemVybyBwb3dlciBpcyAxICovCiAgICBpZiAocG93ZXIgPT0gMCkKICAgICAgICByZXR1cm4ocmVzdWx0KTsKCiAgICBlbHNlCiAgICB7CiAgICAgICAgLyogSGVyZSBpcyB0aGUgcmVjdXJzaXZlIGNhbGwgLi4uIGZ1bmN0aW9uIGNhbGxpbmcgaXRzZWxmICovCiAgICAgICAgcmVzdWx0ID0gIG51bWJlciAqIGNhbGN1bGF0ZV9wb3dlcihudW1iZXIsIHBvd2VyIC0gMSk7CiAgICB9IC8qIGVsc2UgKi8KCiAgICByZXR1cm4gKHJlc3VsdCk7IC8qIHRvIGNhbGxpbmcgZnVuY3Rpb24gKi8KCn0gLyogY2FsY3VsYXRlX3Bvd2VyICovCgppbnQgbWFpbiAodm9pZCkKewoKICAgIC8qIENhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIDQgZGlmZmVyZW50IGFyZ3VtZW50cyAqLwogICAgCiAgICBwcmludGYoIlBhc3NlZCB3aXRoIDUsMCBpcyAlbGlcbiIsIGNhbGN1bGF0ZV9wb3dlcig1LDApKTsKICAgIHByaW50ZigiUGFzc2VkIHdpdGggNSwxIGlzICVsaVxuIiwgY2FsY3VsYXRlX3Bvd2VyKDUsMSkpOwogICAgcHJpbnRmKCJQYXNzZWQgd2l0aCA1LDIgaXMgJWxpXG4iLCBjYWxjdWxhdGVfcG93ZXIoNSwyKSk7CiAgICBwcmludGYoIlBhc3NlZCB3aXRoIDUsMyBpcyAlbGlcbiIsIGNhbGN1bGF0ZV9wb3dlcig1LDMpKTsKCiAgICByZXR1cm4oMCk7Cgp9IC8qIG1haW4gKi8K