[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Schedule](https://evolu.dev/docs/api-reference/common/Schedule) › recurs

```ts
function recurs(n: Int0To100OrNonNegativeInt): Schedule<number>;
```

Defined in: [packages/common/src/Schedule.ts:230](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Schedule.ts#L230)

A schedule that recurs a fixed number of times.

Convenience for `take(n)(forever)`. Outputs the current repetition count (0,
1, 2, ..., n-1).

`n` uses [Int0To100OrNonNegativeInt](https://evolu.dev/docs/api-reference/common/Number/type-aliases/Int0To100OrNonNegativeInt): pass `0` to `100` as a literal, or
a validated [NonNegativeInt](https://evolu.dev/docs/api-reference/common/Type/variables/NonNegativeInt) for larger or dynamic values.

### Limiting recurrence count

```ts
import {
  assertErr,
  assertOk,
  done,
  recurs,
  testCreateDeps,
} from "@evolu/common";

// Retry up to 3 times (4 total attempts including the initial operation).
const retry = recurs(3);
const step = retry(testCreateDeps());
assertOk(step(undefined), [0, 0]);
step(undefined);
step(undefined);
assertErr(step(undefined), done());
```