一、前言
函数递归一直是函数这部分比较难理解的部分、
二、理解
我们这将要用2个算法来理解“递归主要看的是我们将大事化小的想法”
我们代码要求用递归写出i的k次方
代码一
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include<stdio.h>
double pow(int i, int k)
{
if (k == 0)
return 1;
else if (k > 0)
return i * pow(i, k - 1);
else
return (1.0/i)*pow(i,k+1);
}
int main()
{
int i = 0;
int k = 0;
scanf("%d%d", &i, &k);
double p = pow(i, k);
printf("%lf", p);
return 0;
}
我们主要看return (1.0/i)*pow(i,k+1);这个语句:
我们把负数次方理解为1/i的n个相乘,这个想法写出这个算法
代码二
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include<stdio.h>
double pow(int i, int k)
{
if (k == 0)
return 1;
else if (k > 0)
return i * pow(i, k - 1);
else
return 1.0/pow(i,-k);
}
int main()
{
int i = 0;
int k = 0;
scanf("%d%d", &i, &k);
double p = pow(i, k);
printf("%lf", p);
return 0;
}
我们主要看这个语句return 1.0/pow(i,-k);
这个是把负数变成整数计算,然后取倒数
三、结语
希望大家指出不足