There is an org-mode FAQ about this here. The recommendation is to use that recommends using a command to generate a separate task for each day. That might seem heavyweight, thoughbut the FAQ suggests reading this blog post for the pros of this approach. The folding nature of org makes it easy to hide long lists.
Since theIf you prefer infinite recurrence, note that there are two kinds. There is an infinite task recurrence, like in the question, which uses SCHEDULED and the plus time increment syntax. This entry only shows up onin the agenda once (it regenerates everyand is regenerated each time you mark it is completed), the impact of the infinite recurrence is less than for recurring calendar entries, which all show up on the calendar at the same timeleaving a completion log. So maybe the simplest thing isA fairly simple solution would be to use this and schedule a task on the day that the recurrence should end, reminding you to end the recurrence.
An infinite calendar recurrence would be a case where, instead of a single timestamp, you can use an elisp expression to match multiple dates. These entries show up on the agenda on every matching date. There is anotheran org-mode FAQ about conditions like end dates for appointments, using arbitrary elispthis, here. The thing about this approach is, you can't combine it with regeneration. I tried inserting one of these expressions into the SCHEDULED: field on a task and it works, but it works by making thestill behaves like a recurring calendar entry, not a recurring task show up on every day of the agenda where. I tried adding increments like +1d before the expression matchesclose angle bracket and it didn't seem to do anything. It's not apparently possible to get a task with this kind of customized scheduling to regenerate when it's marked as done (adding "+1d" before the close angle bracket didn't do it for me). SoEven if it has a TODO keyword, it's a single task, that happens to show up multiple times, so if you mark it done it's done everywhere. You could use this method if you don't need to log completion times. (Just leave it as TODO, or you could, for example, reset the statefrom DONE back to TODO when reviewingyou review your agenda in the morning, etc.) In fact, you don't even need the TODO or SCHEDULED keywords if you want Or submit a patch to do it this way.make TODOs with elisp based recurrences regenerate :)
See also the manual node for repeated tasks.