Here's the question you clicked on:

55 members online
  • 0 replying
  • 0 viewing

klifka

  • 3 years ago

Hi everyone, small question. For lecture 6 I tried, before seeiing the answer, to write a bit of code for the palindrome problem. I wrote this: def IsPalin(word): if len(word)<=1: return 'input is palindrome' else: if word[0]!=word[-1]: return 'input is not a palindrome' else: word=word[1:-1] IsPalin(word) Ok, there is room for improv, but the issue is this: when I command eg print IsPalin('kook'), it prints None! If I switch the return statements by print statements it returns stat and! None, why is this?

  • This Question is Closed
  1. wacsam
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    in fact,when the len(word)>2 ,the program doesn't make sense . I don't know ,too.

  2. rsmith6559
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 2

    This is a recursive function. Each "pass" creates a new, "deeper" stack frame. When it returns, it returns up through all the stack frames. Your call to IsPalin(word) doesn't "pass up" a decision. Try: return IsPalin(word) instead.

  3. wacsam
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    can you speak more clearly

  4. wacsam
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    I mean the mechanism

  5. Ante
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    For words with more than one letter, IsPalin doesn't have a return part so when something like that comes in, it will return None. Imagine that you call a different function, like sqr(7) instead of IsPalin in the end without "return". What would it give you then?

  6. Ante
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 0

    Yeah, I think the confusing thing here is that recursion doesn't work like a while loop where you go through the loop a couple of times until you get a value. In recursion you basically return a value at the first step which is the returned value of another instance of the same function. So you need return at every step. A return of a return of a return of a return... :)

  7. rsmith6559
    • 3 years ago
    Best Response
    You've already chosen the best response.
    Medals 2

    This link should help: http://www.greenteapress.com/thinkpython/html/book006.html Recursion is section 5.8.

  8. Not the answer you are looking for?
    Search for more explanations.

    • Attachments:

Ask your own question

Sign Up
Find more explanations on OpenStudy
Privacy Policy