为什么递增/递减运算符破坏了递归功能

阿德南·穆罕默德(Adnan Mohamed)
func(int n)
// the function should return the sum of the first n term of the 
// harmonic series (1/1 + 1/2 + 1/3 + ... + 1/n )

double sumover(int n)
{
    if (n == 0)
        return 0;
    else
    {
        return (1. / n) + sumover(--n);  // here is the bug
    }
}

当使用n = 1调用该函数时,我希望它计算1。/ 1 + sumover(0)= 1/1 + 0

但是,它正在计算1./0 + sumover(0),为什么呢?

阿斯莫
return (1. / n) + sumover(--n);

不保证该术语(1. / n)将在之前计算sumover(--n)

该标准未指定。

因此,第二项可以首先计算,然后(1. / n)变为(1. /(n - 1)),然后得到意外的输出。

替换为

return (1. / n) + sumover(n - 1);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递增/递减运算符时AND的短路

来自分类Dev

递归和递减运算符

来自分类Dev

递归和递减运算符

来自分类Dev

为什么大量的递增运算符(++)的性能较差?

来自分类Dev

如何使用模运算符递增和递减整数

来自分类Dev

递减运算符

来自分类Dev

递减运算符

来自分类Dev

递减运算符

来自分类Dev

为什么随机数的递归功能停止?

来自分类Dev

“ sed”中的范围运算符实际上是做什么的,它在GNU / busybox中被破坏了吗?

来自分类Dev

Java for loop / jvm损坏了吗?!?循环内的递增运算符在1之后不递增

来自分类Dev

如何在YACC中为后递增/递减运算符编写语法?

来自分类Dev

在 C++ 中使用递增/递减运算符显示数组的奇怪结果

来自分类Dev

C ++中的递增/递减和输出流运算符优先级

来自分类Dev

为什么子类化ActiveSupport :: TimeZone会破坏其类级别的[]运算符?

来自分类Dev

为什么以下 C 代码中的后递减运算符不能按预期工作?(具有 7 的值)

来自分类Dev

为什么history.pushState()破坏了我的导航功能?

来自分类Dev

链递增运算符

来自分类Dev

递减运算符的奇怪行为

来自分类Dev

为什么是$!运算符右关联?

来自分类Dev

为什么需要运算符重载?

来自分类Dev

为什么“ is”运算符的if范围比if更长?

来自分类Dev

为什么是$!运算符右关联?

来自分类Dev

为什么在CUDA中没有简单的原子递增,递减运算?

来自分类Dev

为什么选择功能应用程序作为默认的Haskell运算符,而不是合成?

来自分类Dev

为什么必须将协议运算符实现为全局功能?

来自分类Dev

为什么调用赋值运算符会触发销毁功能?

来自分类Dev

为什么按值返回的未命名对象在调用其转换运算符之前会被破坏?

来自分类Dev

IO的递归功能

Related 相关文章

  1. 1

    递增/递减运算符时AND的短路

  2. 2

    递归和递减运算符

  3. 3

    递归和递减运算符

  4. 4

    为什么大量的递增运算符(++)的性能较差?

  5. 5

    如何使用模运算符递增和递减整数

  6. 6

    递减运算符

  7. 7

    递减运算符

  8. 8

    递减运算符

  9. 9

    为什么随机数的递归功能停止?

  10. 10

    “ sed”中的范围运算符实际上是做什么的,它在GNU / busybox中被破坏了吗?

  11. 11

    Java for loop / jvm损坏了吗?!?循环内的递增运算符在1之后不递增

  12. 12

    如何在YACC中为后递增/递减运算符编写语法?

  13. 13

    在 C++ 中使用递增/递减运算符显示数组的奇怪结果

  14. 14

    C ++中的递增/递减和输出流运算符优先级

  15. 15

    为什么子类化ActiveSupport :: TimeZone会破坏其类级别的[]运算符?

  16. 16

    为什么以下 C 代码中的后递减运算符不能按预期工作?(具有 7 的值)

  17. 17

    为什么history.pushState()破坏了我的导航功能?

  18. 18

    链递增运算符

  19. 19

    递减运算符的奇怪行为

  20. 20

    为什么是$!运算符右关联?

  21. 21

    为什么需要运算符重载?

  22. 22

    为什么“ is”运算符的if范围比if更长?

  23. 23

    为什么是$!运算符右关联?

  24. 24

    为什么在CUDA中没有简单的原子递增,递减运算?

  25. 25

    为什么选择功能应用程序作为默认的Haskell运算符,而不是合成?

  26. 26

    为什么必须将协议运算符实现为全局功能?

  27. 27

    为什么调用赋值运算符会触发销毁功能?

  28. 28

    为什么按值返回的未命名对象在调用其转换运算符之前会被破坏?

  29. 29

    IO的递归功能

热门标签

归档