现在的位置: 首页 > 综合 > 正文

求 1/1 + 1/2 + 2/3 + 3/5 + 5/8 …. 前 n 项之和!

2013年08月06日 ⁄ 综合 ⁄ 共 867字 ⁄ 字号 评论关闭
  1. /* 求 1/1 + 1/2 + 2/3 + 3/5 + 5/8 .... 前 n 项之和! */
  2. #include <iostream>
  3. using namespace std;
  4. /* 迭代算法 */
  5. double sumOfDouble(int n)
  6. {
  7.     int x = 1;
  8.     int y = 1;
  9.     double sum = 0;
  10.     for (int i = 1; i <= n; i++)
  11.     {
  12.         sum += (double)x / y;       
  13.         int temp = x;
  14.         x = y;
  15.         y = temp + y;       
  16.     }
  17.     /*  我的第一个实现,有点不妥
  18.         double x = 0;
  19.         double y = 1;
  20.         double sum = 0;
  21.         for (int i = 1; i <= n; i++)
  22.         {
  23.             int temp = x;
  24.             x = y;
  25.             y = temp + y;
  26.             sum += x / y;       
  27.         }
  28.     */
  29.     return sum;
  30. }
  31. /* 递归算法 */
  32. double sumOfDouble1(int n, int x = 1, int y = 1)
  33. {
  34.     if (1 == n)
  35.     {
  36.         return (double)x / y ;
  37.     }
  38.     else 
  39.     {
  40.         return (double)x / y + sumOfDouble1(n - 1, y, x + y);
  41.     }
  42. }
  43. int  main()
  44. {
  45.     cout << sumOfDouble(20) << endl;
  46.     cout << sumOfDouble1(20) << endl;
  47.     return 0;
  48. }

抱歉!评论已关闭.