我写了一个函数。它在循环的帮助下工作。如何递归地重写它?
function countBs(str) {
var counter = 0;
for (var i = 0; i <= str.length - 1; i++) {
if ( str.charAt(i) == 'B' )
counter++;
}
return counter;
}
答案 0 :(得分:1)
function countBs(str){
if(str == ""){
return 0;
}else{
str = str.toLowerCase();
if(str.charAt(str.length-1) == 'b'){
return countBs(str.substring(0, str.length-1)) + 1;
}else{
return countBs(str.substring(0, str.length-1));
}
}
}
如果您只想检查大写字母B,您显然可以省略str.toLowerCase()
,只需与B
进行比较。此函数以字符串形式计算大写和小写B.
答案 1 :(得分:1)
我的努力
function countBs(str, mychar) {
if (str !== '') {
if (str.substring(0, 1) === mychar) {
return 1 + countBs(str.substring(1), mychar);
} else {
return 0 + countBs(str.substring(1), mychar);
}
} else {
return 0;
}
}
我添加了参数char,以便您可以指定任何所需的字符。
countBs('BBBBBsss', 'B');
答案 2 :(得分:0)
您还需要将计数器作为函数传递
function countBs(str, counter, index)
{
//initialize values if not passed
counter = counter && counter > str.length || 0;
index = index && index > str.length || 0;
//terminating condition
if ( index == str.length )
{
return counter;
}
if ( str.charAt(index++) == 'B' )
{
counter++;
}
return countBs(str, counter, index);
}
现在将方法调用为
countBs( "asdasds23dbdssd" );