【发布时间】:2016-01-23 11:31:22
【问题描述】:
我对递归的整个概念非常陌生,老实说,这让我有点震惊。我正在尝试将我编写的这个函数变成一个递归函数......
public static int to_number(String s)
{
int total = 0;
int n=s.length();
for(int i = 0 ; i < n ; i++) {
char c = s.charAt(i);
if (Character.isDigit(c)){
int value=Character.getNumericValue(c);
total +=value;
}
}
System.out.println(total);
return total;
}
它读入一个字符串,例如“3aaa6a3”,遍历该字符串,如果char 是一个数字,它将它添加到总数中,等等。到目前为止我所拥有的......
public static int to_number(String s)
{
int total = 0;
int n=s.length();
int i=0;
if (i == n){
return 0; //if gone through the whole string
}
char c = s.charAt(i);
if (Character.isDigit(c)){
int value=Character.getNumericValue(c);
total +=value;
}
System.out.println(total);
i++;
to_number(); //trying to call the same function
return total;
}
我觉得我很接近,但只是没有得到它。感谢您的时间和精力!
【问题讨论】:
-
乍一看,这不会编译。您正在尝试调用不带参数的
to_number(String)方法。 -
那么,您面临的实际问题是什么?
-
@dguay 传递
s将导致无限递归。 OP 需要传递s的子字符串。 -
@azurefrog 你说得对,我的错!
-
您应该将要查看的字符串和当前索引传递给函数。从 index = 0 开始并在每次调用中递增。这样
if ( i == n)就有意义了。您应该能够继续使用此提示
标签: java if-statement recursion char return