连续搜索字符B.递归

时间:2016-05-03 14:06:27

标签: javascript

我写了一个函数。它在循环的帮助下工作。如何递归地重写它?

function countBs(str) {
  var counter = 0;

  for (var i = 0; i <= str.length - 1; i++) {
    if ( str.charAt(i) == 'B' )
      counter++;
  }

  return counter;
}

3 个答案:

答案 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" );