把一个数字分离成不同的数字的和
一道有趣的题目,把一个整数num拆分成n个整数的合,要求这n个整数各不相同,不能有重复,如num为10,则有以下几种情况:
函数printSerial由于是i<n所以当i=1时是不会打印任何东西的,所以splitNum的for循环中当start是1时实际上只执行了“把剩下的num分成两半”的两句打印语句,这正是我们想要的。
?
分析此类可以发现存在两个问题:
1、sumToN实际上是不需要的,我们完全可以充分利用先计算过的结果,从而无须每次都从头到尾计算前n个数的和;
2、如果把System.out.println("------------");这一句的注释打开,可以看到在最后一组数字后面还打多了两次------------,如下:
这是我对这个题目的思考过程,有错误的地方欢迎大牛批评指出。