public class testSuanfa { public int sum=0; public void calc(int n) throws Exception{ System.out.println(n); byte[] bs = new byte[n]; sum += n; calc(n-1); return; }
public static void main(String[] args) { testSuanfa t= new testSuanfa(); int n=100; try{ t.calc(n); }catch(Exception e){} System.out.println("sum(" + n + ") = " + t.sum); }}
递归算法,用数据下标越界来判断是否到达N,没用任何关键字及判断条件。运行了一下好像是对的 static int a[]; public static void main(String[] args) { int n = 10;//用户数据指定值 a= new int[n]; Test t = new Test(); int sum = t.a(0); System.out.println(sum); } public int a(int n) { int i = n+1; try{ a[n] = i;
public class testSuanfa {
public int sum=0; public void calc(int n) throws Exception{
System.out.println(n);
byte[] bs = new byte[n];
sum += n;
calc(n-1);
return;
}
public static void main(String[] args) {
testSuanfa t= new testSuanfa();
int n=100;
try{
t.calc(n);
}catch(Exception e){}
System.out.println("sum(" + n + ") = " + t.sum);
}}
public static void main(String[] args) {
int n = 10;//用户数据指定值
a= new int[n];
Test t = new Test();
int sum = t.a(0);
System.out.println(sum);
}
public int a(int n)
{
int i = n+1;
try{
a[n] = i;
}
catch(Exception e)
{
return 0;
}
return i+a(i);
}
public class testSuanfa {
public int sum=0; public boolean calc(int n){
sum += n;
return (n==0)||calc(n-1);
}
public static void main(String[] args) {
testSuanfa t= new testSuanfa();
int n=100;
t.calc(n);
System.out.println("sum(" + n + ") = " + t.sum);
}}
这有点强词夺理了
条件判断语句(A?B:C)怎么就等于条件判断n==0了,又哪里说不让返回boolean了
//连除都不能用,逼我出大招~~
public static void main(String[] args) {
System.out.println(sum(100));
} /** 求和公式 (n+1)*n/2
*/
public static int sum(int n) {
return get(n + 1, n) >>> 1;
} /** return d*n
*/
public static int get(int d, int p) {
try {
int k = 1 % p;
} catch (java.lang.Exception e) {
return 1;
}
return d + get(d, p - 1);
}
//除法也不能用,只能出大招了
public static void main(String[] args) {
System.out.println(sum(100));
} /** 求和公式 (n+1)*n/2
*/
public static int sum(int n) {
return get(n + 1, n) >>> 1;
} /** return d*n
*/
public static int get(int d, int p) {
try {
int k = 1 % p;
} catch (java.lang.Exception e) {
return 1;
}
return d + get(d, p - 1);
}
有什么作用?还有就是byte数组的用法有什么?谢谢!
这句话的唯一作用就是产生异常抛出,当n<0时,这句话报错抛出异常,从而让递归函数有机会终止。
3种异常终止递归的原理殊途同归,只是制造异常的方法各不相同,分别是初始化数组,访问数组,对0取模个人觉得,bawgiitx的写法既然还是用到递归来求乘积,为了求商另写一个方法不够简明,因为用递归已经可以直接求和了。但同时bawgiitx用位移操作来取除以2的商,又堪称一大亮点。我吃晚饭的时候还在考虑这个题有没有别的解法,我想按公式计算,但除以2卡住了我,受到bawgiitx的启发,现在我可以写出不用递归,同时也是最简明,同时也可能最让出题者吐血的第5种解法了,如下:
public class testCalc {
public static int sum(int n) {return (int)(Math.pow(n, 2) + n)>>>1; }
public static void main(String[] args) {
System.out.println(sum(100));
}
}