2012-03-12 244 views
0

对不起,我不擅长数学 但是有没有一个数学公式可以代替下面的代码,即计算给定qid,点和因子没有循环的点?如何将for循环计算转换为数学公式?

for (int i = 1; i < qid; i++) 
    { 
     points = points * factor; 
    } 

如何可以转换上述代码成数学公式比可以在一个单一的线路被计算,而不循环 感谢。

+0

什么语言/平台? – 2012-03-12 17:53:40

+0

你的计算积分值对于无限数是相同的。循环..你ü寻找相同的..? – Teja 2012-03-12 17:54:58

+0

上面的代码是在java – Tamer 2012-03-12 18:00:17

回答

2

假设points被初始化为1,它等同放着清单points = factor^(qid-1),或一般情况下:points_after = points_before * factor^(qid-1)

循环重复qid - 1倍[i获取值:1,2,...,qid-1,为价值i==qid你不这样做多],和在每次迭代中,你每次都多points通过factor,所以你多它通过共factor^(qid-1)

+0

你怎么解决这个问题?你用笔和纸跟踪测试值的循环,并尝试测试几个方程或什么? – Tamer 2012-03-12 18:09:19

+0

@Tamer:不需要,循环重复'qid-1'次,因为它从1到'qid' [不包括'qid'],并且每次迭代增加1,因此你得到'points = points * factor * factor * ... * factor' ['qid-1' times],它的定义是'points * factor ^(qid-1)' – amit 2012-03-12 18:12:46

+0

我想了解如何独立完成,像我应该学习什么课程才能做到这一点:) – Tamer 2012-03-12 18:15:07

1

基本上你的代码是代表“点=点*因素qid - 1“。您如何在代码中表达这一点取决于语言/平台。例如,您可以使用Java代码:

points *= Math.pow(factor, qid - 1); 

正确的答案将取决于类型的pointsfactor,这两者都不你告诉我们......

(也有可能你的意思是从0开始而不是1,在这种情况下,从上面的代码中删除- 1 ...)

0

指数。

points *= power(factor, qid - 1) 

应该工作。

+0

循环重复'qid-1'次。 – amit 2012-03-12 18:00:16

+0

你说得对。所以如果qid是5,循环将运行4次,如果因数是.5,那么结果将是.5 * .5 * .5 * .5,但是如果只是QID是指数,这将是5次。编辑,谢谢。 – DanRedux 2012-03-12 18:01:46

0

points * = Math.pow(factor,qid);

+0

循环重复'qid-1'次。 – amit 2012-03-12 18:00:47