اشکال کار اینجا است که شرط if (a==1) در f(a -= 10) و سایر ورودی ها برقرار نیست، شما برای func(0) مقدار 1 رو بدست آورده اید، اما 10 - 10 که 1 نمیشه، 0 میشه.
شرط if (a==1) برای a = 0 که برقرار نیست.
پس f(0) میشه هم f(0) = 0 + f(-10) و f(-10) میشه f(-10) = -10 + f(-20) و ... اونقدر ادامه میده تا در حافظه پشته سر ریزی رخ بده.
اگر از f(50) شروع می کنید شرط درست باید if (a==0) باشه، نه if (a==1)
اگر از f(51) شروع می کنید همون شرط if (a==1) مناسبه.