一个字符串出现另一个字符串n次用java递归方法怎么做
时间: 2024-05-02 08:20:42 浏览: 9
您好!针对您的问题,可以使用Java中的indexOf()和substring()方法来实现。代码如下所示:
```
public static int countOccurrences(String str, String subStr) {
int index = str.indexOf(subStr);
if (index == -1) {
return 0;
} else {
return 1 + countOccurrences(str.substring(index + subStr.length()), subStr);
}
}
```
其中,countOccurrences()方法用于计算subStr在str中出现的次数。该方法首先使用indexOf()方法查找subStr在str中第一次出现的位置,如果找到,就递归调用自身来查找剩余部分中subStr的出现次数。如果未找到,就返回0。
但请注意,递归方法在处理较大的字符串时可能导致堆栈溢出的问题,因此建议在实际应用中使用循环方法来实现。
相关问题
java使用递归调用方法将一个n位整数转换成字符串
可以使用以下递归方法将一个n位整数转换成字符串:
1. 如果n等于1,则直接返回该整数的字符串表示。
2. 否则,将该整数除以10,得到商和余数。
3. 将商转换成字符串表示,然后递归调用该方法,将余数转换成字符串表示。
4. 将步骤3中得到的字符串和步骤2中得到的余数的字符串拼接起来,得到最终的字符串表示。
例如,对于整数12345,可以按照以下步骤进行转换:
1. n=5,不是1,继续执行。
2. 12345÷10=1234余5。
3. 1234转换成字符串"1234",递归调用该方法,将5转换成字符串"5"。
4. 将"1234"和"5"拼接起来,得到最终的字符串"12345"。
代码实现如下:
public static String intToString(int n) {
if (n < 10) {
return Integer.toString(n);
} else {
int quotient = n / 10;
int remainder = n % 10;
String quotientStr = intToString(quotient);
String remainderStr = Integer.toString(remainder);
return quotientStr + remainderStr;
}
}
用递归的方法将一个整数n转换成字符串
以下是一个将整数n转换成字符串的递归算法示例,使用C++语言实现:
```cpp
#include <iostream>
using namespace std;
string intToStr(int n) {
if (n == 0) {
return "0";
}
string str = "";
if (n < 0) {
str += "-";
n = -n;
}
if (n / 10 == 0) {
str += char(n % 10 + '0');
return str;
}
str += intToStr(n / 10);
str += char(n % 10 + '0');
return str;
}
int main() {
int n = -123;
string str = intToStr(n);
cout << "The string representation of " << n << " is: " << str << endl;
return 0;
}
```
该算法将整数n转换为字符串,支持负数。它首先检查n是否为0,如果是,则返回字符串"0"。接下来,如果n小于0,则在结果字符串中添加负号,并将n转换为正数。然后,如果n是一位数,则将其转换为字符并将其添加到结果字符串中。否则,该算法将递归地调用自身,将n / 10转换为字符串,并将结果添加到结果字符串中。最后,将n的最后一位转换为字符并添加到结果字符串中。