�
!��g. � � � d dl mZ d� Zd� ZdS )� ��wrapsc � �� | ��fd�}|S )a�
Memo decorator for sequences defined by recurrence
Examples
========
>>> from sympy.utilities.memoization import recurrence_memo
>>> @recurrence_memo([1]) # 0! = 1
... def factorial(n, prev):
... return n * prev[-1]
>>> factorial(4)
24
>>> factorial(3) # use cache values
6
>>> factorial.cache_length() # cache length can be obtained
5
>>> factorial.fetch_item(slice(2, 4))
[2, 6]
c �h �� � t � � � �� fd�� � }�fd�|_ �fd�|_ |S )Nc � �� t �� � }| |k r�| S t || dz � � D ]!}�� �|�� � � � �"�d S )N� �������len�range�append)�n�L�i�cache�fs ���k/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/utilities/memoization.py�gz-recurrence_memo.<locals>.decorator.<locals>.g sd �� ��E�
�
�A��1�u�u��Q�x���1�a�!�e�_�_�
*�
*�����Q�Q�q�%�[�[�)�)�)�)���9�� c �"