【发布时间】:2014-06-12 07:16:23
【问题描述】:
我正在尝试构建一个函数,将字符串中的所有数字相加...例如,“dlsjf3diw62”最终将是 65。
我想聪明点,拼凑出一个递归函数:
function NumberAddition(str) {
var numbers='1234567890';
var check=[];
str=str.split[''];
function recursive(str,check) {
if (str.length==0)
return check;
else if (numbers.indexOf(str[0])>=0)
{
for (i=0;i<str.length;i++){
if (numbers.indexOf(str[i])<0)
check.push(str.slice(0,i));
str=str.slice(i);
return recursive(str,check);
}
}
else
str.shift();
return recursive(str,check);
}
您会看到,我正在尝试将我的数字作为数组返回到名为 check 的数组中。不幸的是,我超出了最大调用堆栈大小,我不知道为什么!递归确实有一个基本案例!一旦 str 不再有任何内容,它就会结束。为什么这行不通?我有什么遗漏吗?
-会
【问题讨论】:
-
学习使用浏览器的开发人员工具并逐步执行您的代码。此外,还有一种更简单的方法可以实现您正在尝试的目标。
-
您发布的代码似乎缺少某些内容;很难判断函数在哪里结束,尤其是最后几行看起来有问题。缺少一个大括号。
-
更简单的方法是什么?
-
@user3546595 用正则表达式去掉数字子串,然后减少结果。
-
对不起,我没有复制粘贴到最后一行。确实是名为“递归”的函数不起作用。
标签: javascript recursion