כמו שבר אמר מעליי, בprototype הנוכחי אני לא רואה איך אפשר לעשות את זה באופן רקורסיבי מלא, אבל הנה פיתרון שהוא רקורסיבי לכל דבר ועניין, והיעילות זהה:int f(int A, int n) {
int currStreak, nextStreak;
currStreak = nextStreak = 0;
if (n <= 0)
return 0;
for (currStreak = 0; A == A; currStreak )
;
nextStreak = f(A currStreak, n - currStreak);
if (currStreak > nextStreak)
return currStreak;
return nextStreak;
}