C言語を使用して単語の数を再帰的に計算する方法は何ですか?

C言語を使用して単語の数を再帰的に求めるサンプルコードが以下に示されています。

#include <stdio.h>

// 定义递归函数来计算单词个数

int countWords(char str[]) {

static int wordCount = 0;

static int isWord = 0;

if (str[0] == ‘\0’) {

return wordCount;

}

if (str[0] == ‘ ‘ || str[0] == ‘\n’ || str[0] == ‘\t’) {

isWord = 0;

} else if (isWord == 0) {

isWord = 1;

wordCount++;

}

countWords(str + 1); // 递归调用,移动到下一个字符

return wordCount;

}

int main() {

char str[] = “Hello World, this is a sentence.”;

// 调用递归函数计算单词个数

int numWords = countWords(str);

printf(“单词个数:%d\n”, numWords);

return 0;

}


上記のコードでは、単語の数を計算する再帰関数countWordsを定義しています。再帰呼び出しの度に、現在の文字が空白、改行、またはタブかどうかを判断し、もしそうならisWordを0に設定します。そうでなければ、isWordが0であれば新しい単語に出会ったことを意味し、それを1に設定し、単語のカウンターであるwordCountを増やします。

Main functionで、例の文字列strを定義し、countWords関数を呼び出して単語数を計算し、結果を表示します。

このコードを実行すると、出力結果は次のようになります:単語の数:6(例の文字列に基づいて)。実際に使用する際は、例の文字列を実際に単語数を数えたい文字列に置き換えることを確認してください。

C言語を使用して単語の数を再帰的にカウントする例示コードは次の通りです:

#include <stdio.h>

// 定义递归函数来计算单词个数

int countWords(char str[]) {

static int wordCount = 0;

static int isWord = 0;

if (str[0] == ‘\0’) {

return wordCount;

}

if (str[0] == ‘ ‘ || str[0] == ‘\n’ || str[0] == ‘\t’) {

isWord = 0;

} else if (isWord == 0) {

isWord = 1;

wordCount++;

}

countWords(str + 1); // 递归调用,移动到下一个字符

return wordCount;

}

int main() {

char str[] = “Hello World, this is a sentence.”;

// 调用递归函数计算单词个数

int numWords = countWords(str);

printf(“单词个数:%d\n”, numWords);

return 0;

}


上記のコードでは、単語の数を計算する再帰関数countWordsを定義しています。再帰呼び出しのたびに、現在の文字が空白、改行、またはタブであるかどうかを判断し、その場合はisWordを0に設定します。それ以外の場合、isWordが0の場合は新しい単語に出会ったことを示し、それを1に設定し、単語のカウンターwordCountを増やします。

主要な関数内で、サンプル文字列strを定義し、countWords関数を呼び出して単語数を計算し、その結果を出力します。

このコードを実行すると、出力結果は次のようになります:単語の数:6(例の文字列に基づく)。実際に使用する際は、例の文字列を実際に単語の数を数えたい文字列に置き換えてください。

bannerAds