请写出各自独立的三段代码来计算给定文本内字符“A”的个数,其中一段代码要使用到递归方式。例如:假设给定文本为“AAA ratingA”,则返回结果为“4”。
public class Test {
public static void main(String args[]){
String s="AAA ratingAA";
int number=getNumber(s,'A');
System.out.println(number);
}
public static int getNumber(String s,char a){
int number=0;
if(s.indexOf(a)!=-1){
s=s.substring(s.indexOf(a)+1,s.length());
number=getNumber(s,a)+1;
}
return number;
}
}
var count=0;
function calc(str){
if(str.indexOf('A')>=0){
var index=str.indexOf('A');
count++;
str=str.substr(index+1,str.length);
console.info(str)
return calc(str)
}else{
return count;
}
}
console.info(calc('AAA ratingA'));//4
int countCh(char *str)
{
if(!*str)
{
return 0;
}
else
{
if(*str=='A')
{
return 1+countCh(str+1);
}
else
{
return countCh(str+1);
}
}
}
为什么我的没缩进?
public class Test {
public static void main(String args[]){
String s="AAA ratingA";
int number=0;
for(int i=0;i<s.length();i++){
if("A".equals(s.charAt(i)+"")){
number++;
}
}
System.out.println(number);
}
}
你的重点在 为了用递归而用递归
同意楼上。统计单词,其实正常方法就是遍历字符串···
先判断传入的字符串的第一个字符是否是A,然后将字符串的第一个字符去掉,如果第一个字符是A,递归调用函数,并传入新字符串,当前返回1+递归调用返回的值,若不是A则直接返回递归调用返回的值即可
int fun(int bit,char s[])
{
if(bit==strlen(s)) return 0;
if(s[bit]=='A') return 1+fun(bit+1,s);
else return fun(bit+1,s) ;
}
不知道你说的递归是否是这样的递归
private void initDatas(int count,String ss) {
if(ss.length()==0){
System.out.println(count);
return;
}else {
String a = ss.substring(1,ss.length());
String b = ss.substring(0,1);
if("A".equals(b)){
count++;
}
initDatas(count,a);
}
}