剑指offer||求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。an

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

是不是老阔疼,想用递归,但是有for又不行,抓狂!

别慌,我们来分析分析,既然乘除用不了,那么n^2+n肯定是行不通的。再想想,除了上述方法之外,还有没有其他的好方法。
一般会想到从1往上加,但问题是边界问题,也就是什么时候截止的问题。n的界限不好确定,所以我们倒着来,以0为界限,从n往下加。

代码如下:

public class Solution {
	public static void main(String[] args) {
		System.out.println("请输入n的值");
		Scanner s = new Scanner(System.in);//从键盘输入
        int n=s.nextInt();  
        int r=sum(n);  
        System.out.print(r);  
          
    }  
    public static int sum(int n){  
        int r=0;  
        boolean ans=false;//如果ans为false,则执行下一步
        int a=0; // 界限
        ans=(n!=0)&&(a==(r=sum(n-1)));  //n不为0这个为真,但是a不等于后面的,
        //所以结果为假,返回r+n,继续执行,结果为假,返回n-1,实现从n一直加到0;
        return r+n;  
    }
}

输出结果
在这里插入图片描述
欢迎大家留言讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值