首页 > 解决方案 > 递归函数的一些问题

问题描述

我尝试使用递归函数来创建我的幂函数。问题是:“编写一个幂函数,它可以与基数(自然)和幂(整数)一起使用”。但是当用户“给我”负能量时,就会出现麻烦。请找出错误。不需要所有 printf 函数(main 中的 printf 除外)。

#include <stdio.h>

int Power(int power, float base)
{
    printf("%f\n", base);
    printf("POWER%d\n", power);
    if (power == 0)
    {
        return 1;
    }
    else
    {
        if (power < 0)
        {
            return Power(power *= -1, 1 / base);
        }
        else
        {
            if (power == 1)
            {
                printf("%f\n", base);
                // printf("POWER%d\n",power);
                return base;
            }
            else
            { //printf("%f\n",base);
                //printf("POWER%d\n",power);
                return base * Power(power - 1, base);
            }
        }
    }
}
int main()
{
    int a; //power
    printf("Enter a power: ");
    scanf("%d", &a);
    printf("Enter a base: ");
    float b; //base
    scanf("%f", &b);
    if (b == 0)
        printf("0");
    else
    {
        float y = Power(a, b);
        printf("%f", y);
    }
}

标签: crecursion

解决方案


试试这个是否定的:

if (power<0)
        {
            return 1/Power(-power, base);
        }

推荐阅读