2014-02-18 27 views
0

所以我需要使用遞歸編程來計算某個字母出現在某個單詞中的次數。例如,「完成」一詞有2個e。我知道我需要做什麼,但我不知道該怎麼做。我目前有一臺掃描儀設置爲接收用戶的單詞,但這是我目前編寫的所有內容。我覺得僞代碼應該是類似的;從用戶在Java中,我怎樣才能找出有多少某個字母出現在一個字符串與遞歸?

採取字如果(信< = 0)

返回1;在字的字符

其他 拉回

我猜,我使用的長度或方法的charAt不知何故? 我真的需要一些指導,像遞歸如何進來?那是因爲它把這個單詞分解了,直到它發現剩下的「e's」的數量?基本情況是否爲0?我非常感謝幫助!我對此很新。非常感謝你。

+0

在字符串中的「X」的出現次數爲1或0加上該字符串的「X」出現的沒有第一個字符數。嘗試與此相關的工作。附:一個空字符串恰好爲零。 – tkroman

+0

提示:基本情況應該是空字符串或單個字符。然後想想你會如何手動做一個比這更多的角色。將其推廣到一個以上。將其轉化爲代碼。 (順便說一句,這不是一個使用遞歸的好地方;這是一個簡單迭代更容易解決的問題。) – keshlam

回答

1

這裏是你可以做什麼:

public static void main(String[] args) { 

     String myString = "Your test string here..."; 

     List<Character> alreadyDone = new ArrayList<Character>(); 

     for (Character myChar: myString.toCharArray()) { 

      if (alreadyDone.contains(myChar)) { 
       continue; 
      } 

      System.out.println(myChar + ": " + getCount(myString, myChar)); 
      alreadyDone.add(myChar); 
     } 

    } 

    // recursive method to calculate the occurrence of a character in a string 

    private static int getCount(String string, char myChar) { 

     if (string.length() == 0) { 
      return 0; 
     } 

     if (string.charAt(0) == myChar) { 
      return 1 + getCount(string.substring(1), myChar); 
     } 

     return getCount(string.substring(1), myChar); 
    } 
+0

謝謝你的幫助!這現在更有意義:) – user3247128

0

中的僞或許應該更多這樣的:

  • 如果字是空的,返回0
  • 如果第一個字母是一個「e」,返回1 +的「E公司在數其餘的字
  • 否則,返回字母其餘部分的'e'的數量。

在Java中,您將得到其餘的單詞word.substring(1)。這種計數方法效率很低,但對於學習遞歸的目的而言確實如此。

+0

感謝您的指導!子串 - 這正是我所需要的:) – user3247128

1

您需要使用substringcharAt。這是僞代碼:

CountLetter(string, letter) 
1. if string.length() == 0 then return 0 
2. if string.charAt(0) == letter then 
3.  return CountLetters(string.substring(1), letter) + 1 
4. else then return CountLetter(string, letter) 

基本上,遞歸調用應該使用較小版本的字符串。

+0

非常感謝!子串對我更有意義。欣賞它。 – user3247128

1

既然這是功課,我會給你提示。想想這樣說:

num_occurrence(char, str) = num_occurrence(char, str[0]) + num_occurrence(char, str[1:]) 

現在想的,你可以在下列情況下有意義做什麼:

  1. num_occurrence(char, str)其中str是一個空字符串。您是否可以返回一個空字符串中出現次數爲char的有意義的值?
  2. num_occurrence(char, str)其中str是單個字母。在這種情況下你會返回什麼價值?這取決於str裏的字符是什麼,對吧?其中str有多個字符。你可以根據上述情況來解決這個問題嗎?
+0

謝謝你的幫助,感謝! – user3247128

1

實例與遞歸方法做這個,假設你的字存儲在一個字符串字變量:

String word //(your word) 

public int howMany(char c, String word) { 
    // stop condition 
    if(word.length == 0) { 
     return 0; 
    } 


    if(word.charAr(index) == c) { 
     return 1 + howMany(c, word.substring(1, word.length)); 
    } 
    else { 
     return 0 + howMany(c, word.substring(1, word.length)); 
    } 
} 

訣竅是調用與世界的方法沒有它的第一個字母,做它再次,再一次,直到沒有更多的信件。

+0

「訣竅是在沒有第一個字母的情況下與世界聯繫,然後重複,直到沒有更多的字母。」真的點擊了!謝謝! – user3247128

+0

btw:在這裏最簡單/最讚賞的方式來說「謝謝你」是upvote有用的答案(並接受一個,如果適用) –

相關問題