我寫了一個函數。它在循環的幫助下工作。如何遞歸重寫?在一行中搜索字符B.遞歸
function countBs(str) {
var counter = 0;
for (var i = 0; i <= str.length - 1; i++) {
if (str.charAt(i) == 'B')
counter++;
}
return counter;
}
我寫了一個函數。它在循環的幫助下工作。如何遞歸重寫?在一行中搜索字符B.遞歸
function countBs(str) {
var counter = 0;
for (var i = 0; i <= str.length - 1; i++) {
if (str.charAt(i) == 'B')
counter++;
}
return counter;
}
我的努力
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;
}
}
我加了一個參數字符,這樣你可以指定你想要的任何角色。
countBs('BBBBBsss', 'B');
不錯。謝謝! – Aleksandr
您需要通過計數器作爲功能太
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);
}
如果你想只檢查大寫B的現在調用方法
countBs("asdasds23dbdssd");
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));
}
}
}
你顯然可以省略str.toLowerCase()
,只需要比較B
即可。該函數計算字符串中的大寫和小寫B的值。
您必須嘗試。我首先看看我的問題,並將其分解爲可重複的較小問題,並使用基本案例來阻止遞歸。 – jmugz3
我只用嵌套函數獲得。 – Aleksandr