--- title: Hofstadter Figure-Figure sequences id: 59622f89e4e137560018a40e challengeType: 5 videoUrl: '' localeTitle: Последовательности Рисунка Hofstadter --- ## Description

Эти две последовательности положительных целых чисел определяются как:

$$ R (1) = 1 \; \ S (1) = 2 \\ R (n) = R (n-1) + S (n-1), \ quad n> 1. $$

Последовательность $ S (n) $ дополнительно определяется как последовательность положительных целых чисел, не присутствующих в $ R (n) $ .

Последовательность $ R $ начинается:

1, 3, 7, 12, 18, ...

Последовательность $ S $ начинается:

2, 4, 5, 6, 8, ...

Задача: создать две функции с именем ffr и ffs, которые при задании n возвращают R (n) или S (n) соответственно. (Обратите внимание, что R (1) = 1 и S (1) = 2, чтобы избежать ошибок, , Максимальное значение n не должно приниматься. Sloane A005228 и A030124 . Wolfram MathWorld Wikipedia: последовательности Hofstadter Figure-Figure .
## Instructions
## Tests
```yml tests: - text: ffr - функция. testString: 'assert(typeof ffr === "function", "ffr is a function.");' - text: ffs - функция. testString: 'assert(typeof ffs === "function", "ffs is a function.");' - text: ffr должно возвращать целое число. testString: 'assert(Number.isInteger(ffr(1)), "ffr should return integer.");' - text: ffs должно возвращать целое число. testString: 'assert(Number.isInteger(ffs(1)), "ffs should return integer.");' - text: ffr() должен возвращать 69 testString: 'assert.equal(ffr(ffrParamRes[0][0]), ffrParamRes[0][1], "ffr() should return 69");' - text: ffr() должен вернуть 1509 testString: 'assert.equal(ffr(ffrParamRes[1][0]), ffrParamRes[1][1], "ffr() should return 1509");' - text: ffr() должен возвращать 5764 testString: 'assert.equal(ffr(ffrParamRes[2][0]), ffrParamRes[2][1], "ffr() should return 5764");' - text: ffr() должен вернуть 526334 testString: 'assert.equal(ffr(ffrParamRes[3][0]), ffrParamRes[3][1], "ffr() should return 526334");' - text: ffs() должен возвращать 14 testString: 'assert.equal(ffs(ffsParamRes[0][0]), ffsParamRes[0][1], "ffs() should return 14");' - text: ffs() должен вернуть 59 testString: 'assert.equal(ffs(ffsParamRes[1][0]), ffsParamRes[1][1], "ffs() should return 59");' - text: ffs() должен возвращать 112 testString: 'assert.equal(ffs(ffsParamRes[2][0]), ffsParamRes[2][1], "ffs() should return 112");' - text: ffs() должен возвращать 1041 testString: 'assert.equal(ffs(ffsParamRes[3][0]), ffsParamRes[3][1], "ffs() should return 1041");' ```
## Challenge Seed
```js // noprotect function ffr(n) { return n; } function ffs(n) { return n; } ```
### After Test
```js console.info('after the test'); ```
## Solution
```js // solution required ```