Objective-C 指数方法失败



为了练习,我决定制作一个指数方法来处理诸如如果我想做 20^2 即 20*20 这样当然应该达到 400 之类的事情。这是我的方法:

 #import "Math.h"
 @implementation Math
 +(double)exponent:(double)n :(int)e{
     double product = n;
     for(int x=0; x<e; x++){
         product *= product;
     }
     return product;
 }
 @end

然后我像这样使用它:

         double product = [Math exponent:20 :2];
         NSLog(@"product = %g",product);

奇怪的是,每次都是 160000 而不是 400。我做错了什么?

我知道 Objective-C 中没有指数运算符,但是"^"有什么用。我用它来做 20^2,但它是 22。这是为什么呢?

谢谢你们的帮助!

你的 for 循环是错误的。

double product = n;
for(int x=0; x<e; x++){
    product *= product;
}

原始值:产品 = 20。

x=0;产品 = 产品 * 产品。(即产品 = 20 * 20 = 400(

x=1;产品 = 产品 * 产品。(即乘积 = 400 * 400 = 160000(

您的循环应该是:

double product = n;
for(int x=1; x<e; x++){
    product *= n;
}

请注意,for 循环以 x = 1 开头,乘积product *= n;这边:产品 = 20。

x=0;产品 = 产品 * e.(即产品 = 20 * 20 = 400(

您可以使用

pow(n, e)而不是实现自己的。这是 math.h 中定义的 C 方法。由于 Objective-C 是 C 语言的超集,因此您可以毫无问题地将其与 C 语法一起使用:

double product = pow(20, 2);
NSLog(@"product = %lf", product);

顺便说一句,你自己的实现中的问题在于你做了product *= product e次。正确的陈述应该是product *= n

@jer_francis,这不是这个问题的答案,但我看到你问了一个关于什么是一个好的软件开发笔记本电脑的问题,它被审核了。

我建议你看看The Tech Guy。这是一个在全国范围内播出的广播节目,技术人员是Leo Laporte。 他个人不是开发人员,但他对技术有广泛的了解,可能会给你一些好的建议。

你必须打电话参加演出(它只在周末(,但如果你坚持不懈,你很有可能进入。 如果节目没有离您足够近的地方播出,您仍然可以在线收听。 最重要的是,听着很有趣。

大家:很抱歉把这个作为答案,但我不确定我能不能很好地引导这个年轻人找到一个好的来源,帮助他回答他被删除的不那么合适的问题。

最新更新