【剑指offer】无聊的1+2+...+n

本文探讨了一种利用Java构造方法实现1至n求和的方法,避免使用传统的循环和条件判断语句。通过实例化对象数组的方式计算总和,虽然最终因效率问题未达到最优解,但提供了一个有趣的技术视角。

转载请注明出处:http://blog.youkuaiyun.com/ns_code/article/details/27964027

题目描写叙述:

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

输入:

输入可能包括多个測试例子。
对于每一个測试案例。输入为一个整数n(1<= n<=100000)。

输出:

相应每一个測试案例,
输出1+2+3+…+n的值。

例子输入:
3
5
例子输出:
6
15
    这道题目确实非常无聊,试着用java语言。构造方法来写,最后实在没办法,还是要用for,构造了对象数组是不假,可是那个人家调用的是创建数组引用对象的构造函数。还要实例化数组中的对象n次才行。又逼着我用for循环,这也罢了,測试结果超时了,关键是每一个測试用例的时间没有超时。可是总时间超时了。


    不想再在这样的无聊的题目上浪费时间了。索性这样了,有段时间没用java了,手都生了,另外,用java构造函数思路做本题目,有不用for循环就可以计算出答案的。欢迎提示,实在不想去想了!

    不管如何。还是把代码贴上吧!

import java.util.*;
public class Main{
	public static void main(String args[]) {
		Scanner cin = new Scanner(System.in);
		int n;
		while (cin.hasNext()) {
			n = cin.nextInt(); 
			Temp.Reset();
			Temp arr[] = new Temp[n];
			for(int i=0;i<n;i++)
				arr[i] = new Temp();
			System.out.println(Temp.getSum());
		}
	}
}

class Temp{
	private static int n = 0;
	private static int sum = 0; 
	public static void Reset(){
		n = 0;
		sum = 0;
	}
	public Temp(){
		++n;
		sum += n;
	}
	public static int getSum(){
		return sum;
	}
}

转载于:https://www.cnblogs.com/llguanli/p/6978475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值