浮点函数返回 1.#QUAN0 而不是实际值

问题描述 投票:0回答:1

我编写这个程序是为了使用递归得到 i 的值,该值暴露于 j 的幂中。作为一名学生,练习解决同一问题的不同方法可能对我有益。代码背后的逻辑工作正常,但是当使用负幂时,函数

np()
返回
1.#QUAN0
而不是实际值。我不明白为什么会发生这种情况。

PS:这段带负电的代码在我学长的笔记本电脑上运行良好。

#include<stdio.h>

int pp(int i, int j,int m)
{
    if(j==0){
        return m;
    }
    else{
        m*=i;
        pp(i,j-1,m);
    }
}

float np(float i,int j,float m){
        if(j==0){
            return m;
            }
        else{
            m*=(1/i);
            np(i,j+1,m);
        }
}

int main(){
    int i;
    int j;
    printf("Enter the value of i=");
    scanf("%d",&i);
    printf("Enter the value of j=");
    scanf("%d",&j);
    if(j>=0){
        printf("%d",pp(i,j,1));
    }
    else{
        printf("%f",np((float)i,j,(float)1));
    }
}
c recursion function-call
1个回答
0
投票

这段带有负功率的代码在我学长的笔记本电脑上运行良好。

我不知道你所说的“高级”是什么意思,但不,事实并非如此。不可以。

以下代码:

m*=(1/i);

可以简单地写为:

m *= 1 / i;

1
(整数)除以
i
(也是整数)。这将 始终 给出
0
,无论
i
的值是多少。当然,不用说,将
m
乘以零将始终得到零。

© www.soinside.com 2019 - 2024. All rights reserved.