java 利用递归求一个整数各位数字之和

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:26:10

只写了个循环
---------------
import java.util.*;

public class Digui{
public static void main (String[] args) {
int sum=0;
System.out.print("请输入一个整数:");
Scanner s=new Scanner(System.in);
int a=s.nextInt();
while(true){
sum+=a%10;
a=a/10;
if(a==0){
sum+=a%10;
break;
}
}
System.out.print("sum is:"+sum);
}
}

为什么一定要用递归呢,能用循环做就用循环,因为递归占内存空间,一开始我也以为递归比较好用,后来发现递归好占内存的,你他细去想想就会知道,为什么会占内存,因为递归都要循环调用同一个方法,而方法里面的变量在方法每调用一次都要分配内存空间,如果数字太大就是溢出的...
public class Number {
public static int total(int a) {
int unit = a % 10;
if (a / 10 != 0) {
return unit + total(a / 10);
}
return unit;
}

// 0 1 1 2 3 5 8 13
// Fn=F(n-1)+F(n-2)
public static int fn(int a) {
if (a == 0)
return 0;
if (a < 3)
return 1;
return fn(a - 1) + fn(a - 2);
}