1-2+3-4+5...+n各种解法

来源:互联网 发布:mysql手册中文版 pdf 编辑:程序博客网 时间:2024/05/16 15:09

在书上看到这个提的几种解法 , 前面的一种很简单 , 随着越来越考虑效率问题 , 那么难点就出来了, 希望读者和我一样能有所获。

long fn(int num){if (num <= 0)assert(false);int n = 0;int flag = 1;int i = 1;while (i <= num){n += flag*i++;flag = flag*(-1);}return n;}<span style="background-color: rgb(0, 153, 0);">                                                                                             </span>long fn1(int num){if (num <= 0)assert(false);int n = 0;int flag = 1;int i = 1 , j = 1;while (j <= num){n +=  i;i= -i;i > 0 ? i++ : i--;j++;}return n;}<span style="background-color: rgb(0, 153, 0);">                                                                                              </span>long fn2(int num){if (num <= 0)assert(false);if (num % 2 == 0)return (-1)*num / 2;return (-1)*num / 2 + num;}


 

0 0
原创粉丝点击