Suppose the goal is just to print all the items of a sequence, one on each line. The idea will be to print the first item (only for a nonempty sequence), then use recursion to deal with the rest of the sequence (where "the rest" of the sequence is done by slicing).
1 2 3 4
def PrintItems(S): if len(S) > 0: print S PrintItems(S[1:])
Line 2 is where the clause only for a nonempty sequence takes effect. Line 4 combines a recursive call and the slice for "the rest".
Now suppose we only want to print items in S so long as they are strings. In other words, the very first item that is not a string should end the printing for all the rest of S. For this situation, two modifications of the code above are needed. First, there needs to be an if-test for the type of item; second, recursion should stop once it is found an item is not a string.
1 2 3 4 5
def PrintItems(S): if len(S) > 0: if type(S) == str: print S PrintItems(S[1:])
In this second version, in order for recursion to happen, S must be nonempty and the first item of S has to be a string. Failure to meet these two conditions ends the function.