Java代码实现(不符题意版,直接想到的)
public class Solution {
int multiplication(int a, int b)
{
int sign = 1;
if (b < 0)
{
sign = -sign;
b = -b;
}
if (a < 0)
{
sign = -sign;
a = -a;
}
int ret = 0;
while (b!=0)
{
if ((b % 2)==1)
{
ret = ret + a;
}
a <<= 1;
b >>= 1;
}
if (sign < 0)
return -ret;
return ret;
}
public int Sum_Solution(int n) {
return multiplication(n,n+1)>>1;
}
}
Python代码实现(同上)
# -*- coding:utf-8 -*-
class Solution:
def chengfa(self,a,b):
sign=1
result=0
if(a<0):
a=-a
sign=-sign
if(b<0):
b=-b
sign=-sign
while(b!=0):
if((b%2)==1):
result=result+a
a=a<<1
b=b>>1
if(sign>0):
return result
else:
return -result
def Sum_Solution(self, n):
# write code here
return self.chengfa(n,n+1)>>1
参考文献
正确版Java实现
public class Solution {
public int Sum_Solution(int n) {
int sum = n;
boolean ans = (n>0)&&((sum+=Sum_Solution(n-1))>0);
return sum;
}
}
正确版Python实现
# -*- coding:utf-8 -*-
class Solution:
def Sum_Solution(self, n):
# write code here
ans=n
temp=ans and self.Sum_Solution(n-1)
ans=ans+temp
return ans
注意点
1.利用短路与&&实现 if 的功能
2.利用递归来实现while循环的功能
3.python中a and b ,a为真 ,返回b, a为假,返回a