Хотя существуют более простые методы, решение с использованием рекурсии выглядит следующим образом.
def extract(s):
' finds substrings delimited by ; '
try:
index = s.index(';')
# current word + recursion for remainder
# index + 1 in recursion to skip over ';'
return [s[:index]] + extract(s[index+1:])
except:
# delimiter wasn't found (base case)
return []
Использование
strr = "int a; int b; int c;"
print(list(extract(strr))) # Need list to get all element of generator
# Output: ['int a', ' int b', ' int c']