前言
本书第一个自己写的递归练习题,必须纪念一下,从上大学起,人生第一次接触递归的概念,就觉得很高端,今天好好感悟一下。
解决
直接上代码:
#include <stdio.h>
unsigned long long int power(int base, int exponent);
int main(void)
{
int a;
int b;
printf("%s\n", "Enter a base: ");
scanf("%d", &a);
printf("%s\n", "Enter a exponent: ");
scanf("%d", &b);
printf("The power %d of %d is %llu", b, a, power(a, b));
}
unsigned long long int power(int base, int exponent)
{
if (exponent == 1)
{
return base;
}
else
{
return base * power(base, exponent - 1);
}
}
回想递归的定义是调用自己的函数,要有基线条件,规模要不断减小避免无穷递归。根据本道题目中已经给出的提示,对应的把幂参数当做规模不断减小的条件,进而找到本题的解法。运行代码,结果如下: