({{, (RefLink[RSolve, paclet:ref/RSolve])[eqn,a[n],n]
solves a recurrence equation for a[n]. }, {, (RefLink[RSolve, paclet:ref/RSolve])[{(Subscript[eqn, 1]),(Subscript[eqn, 2]),…},{(Subscript[a, 1])[n],(Subscript[a, 2])[n],…},n]
solves a system of recurrence equations. }, {, (RefLink[RSolve, paclet:ref/RSolve])[eqn,a[(Subscript[n, 1]),(Subscript[n, 2]),…],{(Subscript[n, 1]),(Subscript[n, 2]),…}]
solves a partial recurrence equation. }})

OpenersNotesSection(Spacer1)Details and Options

(RefLink[RSolve, paclet:ref/RSolve])[eqn,a,n] gives solutions for a as pure functions.

The equations can involve objects of the form a[n+λ] where λ is a constant, or in general, objects of the form a[ψ[n]], a[ψ[ψ[n]], a[ψ[…[ψ[n]]…]], where ψ can have forms such as:

Equations such as a[0]==val can be given to specify end conditions.

If not enough end conditions are specified, (RefLink[RSolve, paclet:ref/RSolve]) will give general solutions in which undetermined constants are introduced.

The constants introduced by (RefLink[RSolve, paclet:ref/RSolve]) are indexed by successive integers. The option (RefLink[GeneratedParameters, paclet:ref/GeneratedParameters]) specifies the function to apply to each index. The default is (RefLink[GeneratedParameters, paclet:ref/GeneratedParameters])->(RefLink[C, paclet:ref/C]), which yields constants (RefLink[C, paclet:ref/C])[1], (RefLink[C, paclet:ref/C])[2], ….

(RefLink[GeneratedParameters, paclet:ref/GeneratedParameters])->((RefLink[Module, paclet:ref/Module])[{(RefLink[C, paclet:ref/C])},(RefLink[C, paclet:ref/C])]&) guarantees that the constants of integration are unique, even across different invocations of (RefLink[RSolve, paclet:ref/RSolve]).

For partial recurrence equations, (RefLink[RSolve, paclet:ref/RSolve]) generates arbitrary functions (RefLink[C, paclet:ref/C])[n][…].

Solutions given by (RefLink[RSolve, paclet:ref/RSolve]) sometimes include sums that cannot be carried out explicitly by (RefLink[Sum, paclet:ref/Sum]). Dummy variables with local names are used in such sums.

(RefLink[RSolve, paclet:ref/RSolve]) sometimes gives implicit solutions in terms of (RefLink[Solve, paclet:ref/Solve]).

(RefLink[RSolve, paclet:ref/RSolve]) handles both ordinary difference equations and q-difference equations.

(RefLink[RSolve, paclet:ref/RSolve]) handles difference-algebraic equations as well as ordinary difference equations.

(RefLink[RSolve, paclet:ref/RSolve]) can solve linear recurrence equations of any order with constant coefficients. It can also solve many linear equations up to second order with nonconstant coefficients, as well as many nonlinear equations.

OpenersPrimaryExamplesSection(Spacer1)Examples  (66)

OpenersExampleSection0(Spacer1)Basic Examples  (4)

Solve a difference equation:

RSolve[a[n+1]-2a[n]==1,a[n], n]

Include a boundary condition:

RSolve[{a[n+1]-2a[n]==1,a[0]==1},a[n],n]

Get a "pure function" solution for a:

RSolve[{a[n+1]-2a[n]==1,a[0]==1},a,n]

Substitute the solution into an expression:

{a[n+1]-2a[n]==1, a[0]==1}/.%//Simplify

Solve a functional equation:

RSolve[a[n]==(Sqrt[n])a[(Sqrt[n])]+n,a,n]

OpenersExampleSection1(Spacer1)Scope  (36)

OpenersExampleSubsection0(Spacer1)Basic Uses  (7)

Compute the general solution of a first-order difference equation:

RSolve[a[n+1]==3a[n],a[n], n]

Obtain a particular solution by adding an initial condition:

sol=RSolve[{a[n+1]==3a[n],a[0]==1},a[n], n]

Plot the solution of a first-order difference equation:

sol=RSolve[{a[n+1]==2 a[n]+5,a[0]==3},a[n],n]

DiscretePlot[a[n]/.sol[[1]],{n,0,10}]

Make a table of values:

Table[a[n]/.sol[[1]],{n,0,10}]

Verify the solution of a difference equation by using a in the second argument:

eqns={a[n+1]==4a[n]+k E^n,a[0]==3};

sol=RSolve[eqns,a,n]

eqns/.sol//Simplify

Obtain the general solution of a higher-order difference equation:

RSolve[a[n+2]-5a[n+1]+6a[n]==n,a[n],n]

Particular solution:

RSolve[{a[n+2]-5a[n+1]+6a[n]==n,a[0]==1,a[1]==3},a[n],n]

Solve a system of difference equations:

eqns={a[n+1]-b[n]==2,a[n]-3 b[n+1]==5,a[0]==3,b[0]==1};

sol=RSolve[eqns,{a,b},n]

Plot their solution:

DiscretePlot[Evaluate[{a[n],b[n]}/.sol],{n,0,20}]

Verify the solution:

eqns/.sol//Simplify

Solve a partial difference equation:

RSolve[7a[m+1,n]-6a[m,n+1]==m,a[m,n],{m, n}]

Obtain a particular solution:

sol=a[m,n]/.%[[1]]/.(C[1])->Cos

Plot the resulting solution:

DiscretePlot3D[sol,{m,0,15},{n,0,15}]

Use different names for the arbitrary constants in the general solution:

RSolve[a[n+2]-7a[n+1]+12a[n]==1,a[n],n]

RSolve[a[n+2]-7a[n+1]+12a[n]==1,a[n],n,GeneratedParameters->f]

OpenersExampleSubsection1(Spacer1)Linear Difference Equations  (6)

Geometric equation:

RSolve[{a[n+1]==c a[n],a[0]==1},a,n]

First-order equation with variable coefficients:

RSolve[a[n+1]==(n^2-1/4)/(n+1) a[n],a[n],n]

A third-order constant coefficient equation:

RSolve[a[n+3]==2a[n], a,n]

Initial value conditions:

RSolve[{a[n+3]==2a[n],a[0]==1,a[1]==2,a[2]==-1}, a,n]

Plot the solution:

ListPlot[Table[a[n]/.First[%],{n,15}],Filling->Axis]

Second-order inhomogeneous equation:

RSolve[a[n+2]-4a[n+1]+3a[n]==n 4^n,a[n],n]

Second-order variable coefficient equation in terms of elementary functions:

RSolve[ (n+4) a[n+2]-a[n+1]-(n+1)a[n]==0,a[n],n ]

RSolve[a[n+2]==(n+1)2^n a[n],a[n],n]

Euler–Cauchy equation:

RSolve[2 a[n]-2 n (-a[n]+a[n+1])+n (1+n) (a[n]-2 a[n+1]+a[n+2])==0,a,n]

In general, special functions are required to express solutions:

RSolve[(n+2)a[n+2]==(2 n+3) x a[n+1]-(n+1) a[n], a,n]

RSolve[a[n]==2(1+n)/(b+c z) a[n+1]-a[n+2],a[n],n]

RSolve[a[n]==2(n+1)/n(c*z+d) a[n+1]-(n+2)/n a[n+2],a,n]

RSolve[ a[n+2]+(2n+1) a[n+1]+n^2 a[n]==0, a[n], n ]

OpenersExampleSubsection2(Spacer1)Nonlinear Difference Equations  (5)

Solvable logistic equations:

RSolve[a[n+1]==2(1-a[n])a[n],a[n],n]

RSolve[a[n+1]==-2(1-a[n])a[n],a[n],n]

RSolve[a[n+1]==4(1-a[n])a[n],a[n],n]

Riccati equations:

RSolve[a[n+1]==-(a[n]+15)/(a[n]+7),a[n],n]

RSolve[ a[n+1] a[n]-2 a[n]+2==0,a,n]

Solutions in terms of trigonometric and hyperbolic functions:

RSolve[a[n+1]==(40+21 a[n]-24 a[n]^2+4 a[n]^3)/9,a[n],n]

RSolve[a[n+1]==((-7300+9600 a[n]+300 a[n]^2-200 a[n]^3+a[n]^4)/(2108+584 a[n]-288 a[n]^2-4 a[n]^3+a[n]^4)),a[n],n]

RSolve[a[n+1]==((-168-36 a[n]+12 a[n]^2-a[n]^3)/(-88-12 a[n]+3 a[n]^2)),a[n],n]

Higher-order equations:

RSolve[ a[n+2]== a[n+1] a[n]^2, a[n],n]

RSolve[ a[n+2]== b^n a[n+1] a[n]^2, a[n], n]

Nonlinear convolution equation:

RSolve[{a[n+1]==Sum[a[m] a[n-m],{m,0,n}], a[0]==1},a[n],n]

OpenersExampleSubsection3(Spacer1)Systems of Difference Equations  (5)

Linear system with constant coefficients:

RSolve[{y[n+1]+z[n]==3,y[n]+2 z[n+1]==1},{y[n],z[n]}, n]

With boundary conditions:

RSolve[{y[n+1]+z[n]==3,y[n]+2 z[n+1]==1,y[0]==5,z[0]==1},{y,z}, n]

Plot their solution:

ListPlot[Transpose @ Table[{y[n],z[n]}/.First[%],{n,0,15}],Filling->Axis]

Linear fractional systems:

RSolve[{y[n+1]==((3y[n])/(1+y[n]+z[n])),z[n+1]==((z[n])/(1+y[n]+z[n]))},{y[n], z[n]},n]

RSolve[{x[n+1]==((x[n]+3 y[n])/(4+x[n]+y[n]+z[n])),y[n+1]==((y[n]+2 z[n])/(4+x[n]+y[n]+z[n])),z[n+1]==((z[n])/(4+x[n]+y[n]+z[n]))},{x[n],y[n],z[n]},n]

Diagonal system:

RSolve[{y[n+1]==(n+1)/2^n y[n],z[n+1]==n^2 z[n]},{y[n],z[n]},n]

Variable coefficient linear system with a polynomial solution:

RSolve[ {-(((1+3 n+n^2) x[n])/(n^2))+x[n+1]+((y[n])/n)+(((1+2 n) z[n])/(n^2))==0,-y[n]+((n^2y[n+1]+(1+2 n) (-x[n]+z[n]))/(n^2))==0,((-x[n]+y[n]-n z[n]+n z[n+1])/n)==0}, {x, y, z}, n ]

Linear constant coefficient difference-algebraic system:

RSolve[{y[n+1]+z[n+1]==y[n]-3z[n], y[n]+2z[n]==1}, {y[n],z[n]}, n]

An index-2 system:

RSolve[{x[n+1]==x[n]+2y[n],y[n]==x[n]+2^n,x[n]+z[n]==0},{x[n],y[n],z[n]},n]

OpenersExampleSubsection4(Spacer1)Partial Difference Equations  (3)

First-order linear partial difference equation with constant coefficients:

RSolve[a[m+1,n]-3/4a[m,n+1]==0,a[m,n],{m, n}]

Substitute the function (RefLink[Sin, paclet:ref/Sin])[2k] for the free function (RefLink[C, paclet:ref/C])[1]:

a[m,n]/.%/.(C[1])->Function[k,Sin[2k]]

Plot the resulting solution:

Plot3D[%,{m,0,10},{n,0,10},PlotRange->All]

Constant coefficient linear equation of orders 2, 3, and 4:

RSolve[ a[m+2,n]==4a[m,n+1],a[m,n],{m,n}]

RSolve[ a[m+3,n]-3a[m+2,n+1]+3a[m+1,n+2]-a[m,n+3]==0, a[m,n],{m,n}]

RSolve[a[m+4,n]-4a[m+3,n+1]+6a[m+2,n+2]-4a[m+1,n+3]+a[m, n+4] == 0,a,{m,n}]

Inhomogeneous:

RSolve[a[m+1,n]-4a[m,n+1]==6m^2 n+4,a[m,n],{m,n}]

Variable coefficient linear equation:

RSolve[ a[m,n]-m a[m-1,n-1]==0,a[m,n],{m,n}]

RSolve[a[m,n]==m^3a[m+1,n+ 1] ,a,{m, n}]

OpenersExampleSubsection5(Spacer1)Q–Difference Equations  (6)

First-order constant coefficient q-difference equation:

RSolve[a[q n]==2a[n],a[n],n]

Equivalent way of expressing the same equation:

RSolve[a[n]==2a[n/q],a[n],n]

Initial value:

RSolve[{a[n]==2a[n/q],a[1]==1},a[n],n]

Second-order equation:

RSolve[a[q n]+a[n/q]==0,a[n],n]

Third-order:

RSolve[a[n]== a[n/q^3],a,n]

Inhomogeneous:

RSolve[a[q^2 n]+a[n]==n,a[n],n]

Using a numeric value for q:

RSolve[{a[n]==3 a[n/2]+n, a[1]==1},a,n]

Plot solution:

ListPlot[Table[a[n]/.First[%],{n,1,10}],Filling->Axis]

Linear varying coefficient equations:

RSolve[a[q n]==n a[n],a,n]

RSolve[a[q^2 n]==n a[n],a,n]

Nonlinear equations:

RSolve[ a[q n]==a[n]^2,a,n]

Riccati equation:

RSolve[a[q n]==-(a[n]+15)/(a[n]+7),a[n],n]

A linear constant coefficient system of q-difference equations:

RSolve[{y[q^2 n]-z[q n]==0,z[q n]-5 y[n]==0},{y[n],z[n]},n]

OpenersExampleSubsection6(Spacer1)Functional Difference Equations  (4)

Find the general solution for an arithmetic difference equation:

sol=RSolve[y[n+(1/3)]==2 y[n+(1/6)]+(n^2),y,n]

Verify the solution:

y[n+1/3] == 2y[n+1/6]+n^2/.sol[[1]]//FullSimplify

Solve an initial value problem for an arithmetic-geometric difference equation:

sol=RSolve[{y[n]==(2^n) y[(n/2)+1],y[3]==4},y,n]

Plot the solution:

ListLogPlot[Table[y[n]/.First[sol],{n,3,10}],Filling->Axis]

Solve a linear fractional difference equation:

sol=RSolve[{y[((2 n-1)/(-n+2))]==3 y[n]+5,y[4]==3},y,n]

Make a table of values for the solution:

Table[y[n]/.sol[[1]],{n,4,10}]

Solve a geometric power difference equation:

sol=RSolve[y[n]==Log[2,n]+2 y[4 (Sqrt[n])],y,n]

Verify the solution:

y[n]==Log[2,n]+2 y[4 (Sqrt[n])]/.sol[[1]]//FullSimplify

OpenersExampleSection2(Spacer1)Generalizations & Extensions  (1)

No boundary condition, gives two generated parameters:

RSolve[{a[n+2]==4a[n]}, a,n]

One boundary condition:

RSolve[{a[n+2]==4a[n],a[0]==1}, a, n]

Two boundary conditions:

RSolve[{a[n+2]==4a[n],a[0]==1,a[1]==4}, a, n]

OpenersExampleSection3(Spacer1)Options  (1)

OpenersExampleSubsection7(Spacer1)GeneratedParameters  (1)

Use differently named constants:

RSolve[a[n+2]==2a[n], a[n],n, GeneratedParameters->d]

Use subscripted constants:

RSolve[a[n+2]==2a[n], a[n],n, GeneratedParameters->(Subscript[c,#]&)]

OpenersExampleSection4(Spacer1)Applications  (11)

This models the amount a[n] at year n when the interest r is paid on the principal p only:

RSolve[{a[n+1]==a[n]+r p,a[0]==p},a[n],n]//Factor

Here the interest is paid on the current amount a[n], i.e. compound interest:

RSolve[{a[n+1]==(1+r)a[n],a[0]==p},a[n],n]

Here a[n] denotes the number of moves required in the Tower of Hanoi problem with n disks:

RSolve[{a[n+1]==2a[n]+1,a[1]==1},a[n],n]

Here a[n] is the number of ways to tile an n×3 space with 2×1 tiles:

RSolve[{a[n+4]-4a[n+2]+a[n]==0,a[1]==0,a[2]==3,a[3]==0,a[4]==11},a,n]

Table[Evaluate[a[n]/.First[%]],{n,2,20,2}]//FullSimplify

The number of comparisons for a binary search problem:

RSolve[b[n]==b[n/2]+1 && b[1]==1,b,n]

Number of arithmetic operations in the fast Fourier transform:

RSolve[f[n]==2 f[n/2]+(3/2)n,f,n]

The integral e[n]==(∫_1^∞)((e^(-x t))/(t^n))dt satisfies the difference equation:

RSolve[{e[n+1]==1/n(Exp[-x]-x e[n]),e[1]==Gamma[0,x]},e[n],n]

The integral i(n)=(∫_0^π)((cos(θ n)-cos(n ϕ))/(cos(θ)-cos(ϕ)))dθ satisfies the difference equation:

RSolve[{i[n+2]-2Cos[ϕ]i[n+1]+i[n]==0,i[0]==0,i[1]==Pi},i[n],n]

The difference equation for the series coefficients of y'[x]==2x y[x],y[0]==1:

RSolve[{n a[n]==2a[n-2],a[0]==1,a[1]==0},a[n],n]

Table[Evaluate[a[n]/.First[%]],{n,0,10}]

DSolve[{y'[x]==2x y[x],y[0]==1},y[x],x]

Series[y[x]/.First[%],{x,0,10}]

SeriesCoefficient[Exp[x^2],{x,0,n}]

Table[%,{n,0,10}]

The determinant of an n×n tridiagonal matrix with diagonals c,a,b satisfies:

RSolve[{d[n+2]==a d[n+1]-b c d[n],d[1]==a,d[2]==a^2-b c},d[n],n]

Table[Evaluate[d[n]/.First[%]],{n,2,5}]//Simplify

Table[Det @SparseArray[{Band[{1,1}]->a,Band[{1,2}]->b,Band[{2,1}]->c},{n,n}], {n,2,5}]

This models the surface area s[n] in dimension n of a unit sphere:

RSolve[{s[n+2]==2Pi/n s[n],s[2]==2Pi,s[3]==4Pi},s[n],n]

Table[s[n]/.First[%],{n,2,10}]

The volume of the unit ball in dimension n:

RSolve[{v[n]==2Pi v[n-2]/n,v[2]==Pi,v[3]==4/3Pi},v[n],n]

Table[v[n]/.First[%],{n,2,10}]

Applying Newton's method to (x^2)==3, or computing (Sqrt[3]):

RSolve[y[n+1]==(1/2)(y[n]+3/y[n])&&y[0]==1/5,y,n]

Table[y[k]/.%[[1]],{k,1.,6}]//Chop

Applying the Euler forward method to y''[x]+1/100 y[x]==0 yields:

RSolve[ {((101 y[n])/100)-2 y[n+1]+y[n+2]==0,y[0]==1,y[1]==1},y,n]

Plot[Evaluate[y[k]/.First[%]],{k,0,10}]

DSolve[ y''[x]+1/100y[x]==0&&y[0]==1&&y[1]==1,y,x]

Plot[ Evaluate[y[x]/.First[%]], {x,0,10}]

Solve the difference equation that describes the complexity of Karatsuba multiplication:

ksol=RSolve[ {t[n]==3 t[n/2+1]+n ,t[3]==1},t,n ]

Compare with the complexity of schoolbook multiplication:

DiscretePlot[{t[n]/.ksol,n^2},{n,5,300},PlotLegends->{"Karatsuba","Schoolbook"}]

OpenersExampleSection5(Spacer1)Properties & Relations  (8)

Solutions satisfy their difference and boundary equations:

RSolve[{a[n+2]== a[n],a[0]==1,a[1]==2},a,n]

{a[n+2]== a[n],a[0]==1,a[1]==2}/.%//Simplify

Difference equation corresponding to (RefLink[Sum, paclet:ref/Sum]):

RSolve[a[n+1]-a[n]==n^2 && a[0]==0,a[n],n]//Expand

Sum[i^2,{i,0,n-1}]//Expand

Difference equation corresponding to (RefLink[Product, paclet:ref/Product]):

RSolve[a[n+1]==n a[n]&&a[1]==1,a[n],n]//FunctionExpand

Product[i,{i,1,n-1}]//FunctionExpand

(RefLink[RSolve, paclet:ref/RSolve]) returns a rule for the solution:

RSolve[a[n+1]-2a[n]==1,a[n], n]

(RefLink[RSolveValue, paclet:ref/RSolveValue]) returns an expression for the solution:

RSolveValue[a[n+1]-2a[n]==1,a[n], n]

(RefLink[RSolve, paclet:ref/RSolve]) finds a symbolic solution for a difference equation:

RSolve[{a[n+1]==2a[n]+1,a[0]==7},a,n]

Table[a[n]/.%[[1]],{n,0,7}]

(RefLink[RecurrenceTable, paclet:ref/RecurrenceTable]) generates a procedural solution for the same problem:

RecurrenceTable[{a[n+1]==2a[n]+1,a[0]==7},a,{n,0,7}]

(RefLink[FindLinearRecurrence, paclet:ref/FindLinearRecurrence]) finds the minimal linear recurrence for a list:

b=FindLinearRecurrence[Table[Fibonacci[k],{k,7}]]

(RefLink[RSolve, paclet:ref/RSolve]) finds the sequence satisfying the recurrence:

RSolve[{a[n]==b.{a[n-1],a[n-2]},a[1]==1,a[2]==1},a[n],n]

Use (RefLink[RecurrenceFilter, paclet:ref/RecurrenceFilter]) to filter a signal:

RecurrenceFilter[{{1,-(1/2)},{1}},{1,0,0,0,0,0,0,0}]

Solve the corresponding difference equation using (RefLink[RSolve, paclet:ref/RSolve]):

RSolve[{y[n]-(1/2)y[n-1]==DiscreteDelta[n],y[-1]==0},y[n],n]

Table[y[n]/.%[[1]],{n,0,7}]

Forecast the next value for a time series based on (RefLink[ARProcess, paclet:ref/ARProcess]):

proc=ARProcess[{a[2],a[1]},v];

TimeSeriesForecast[proc,{3,5}]

Obtain the same result using (RefLink[RSolve, paclet:ref/RSolve]):

sol=RSolve[{x[n+1]==a[2] x[n]+a[1]x[n-1],x[1]==3,x[2]==5},x[n],n];

x[n]/.sol[[1]]/.{n->3}//Simplify

OpenersExampleSection6(Spacer1)Possible Issues  (4)

Results may contain symbolic sums and products:

RSolve[a[n+1]==a[n]+f[n],a[n],n]

RSolve[a[n+1]==f[n]a[n],a[n],n]

The solution to this difference equation is unique as a sequence:

RSolve[a[n+1]==2a[n]&&a[0]==1,a,n]

As a function it is only unique up to a function of period 1:

a[n+1]==2a[n]&&a[0]==1/.a->Function[n,2^n+a Sin[Pi n]]

Simplify[ %, n∈Integers ]

Boundary value problems may have multiple solutions:

RSolve[a[n+1]==a[n]^2,a[n],n]

RSolve[a[n+1]==a[n]^2&&a[1]==3,a[n],n]

Verify the solution when the equation involves subscripted variables:

eqn=(Subscript[a, n+1])-2 (Subscript[a, n])==1;

sol=RSolve[eqn,(Subscript[a, n]),n][[1]]

Simplify[eqn/.(sol/.{(Subscript[a, n])->(Subscript[a, n_])})]

OpenersExampleSection7(Spacer1)Neat Examples  (1)

Compute the n(^th) iterate or composition of a function:

RSolve[{a[n+1]==((2a[n]+3)/(a[n]+4)),a[0]==0},a[n],n]

Table[Evaluate[a[n]/.First[%]],{n,0,10}]

NestList[((2 #+3)/(1 #+4))&,0,10]

Apply[Composition, Table[((2 #+3)/(1 #+4))&,{10}]][0]

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[RSolveValue, paclet:ref/RSolveValue])  ▪  (RefLink[AsymptoticRSolveValue, paclet:ref/AsymptoticRSolveValue])  ▪  (RefLink[RecurrenceTable, paclet:ref/RecurrenceTable])  ▪  (RefLink[Sum, paclet:ref/Sum])  ▪  (RefLink[ZTransform, paclet:ref/ZTransform])  ▪  (RefLink[GeneratingFunction, paclet:ref/GeneratingFunction])  ▪  (RefLink[DifferenceRoot, paclet:ref/DifferenceRoot])  ▪  (RefLink[DSolve, paclet:ref/DSolve])  ▪  (RefLink[FindSequenceFunction, paclet:ref/FindSequenceFunction])  ▪  (RefLink[FindGeneratingFunction, paclet:ref/FindGeneratingFunction])  ▪  (RefLink[FindLinearRecurrence, paclet:ref/FindLinearRecurrence])}})}})

({{DocumentationFooterIconsRelatedTutorial.png, ({{Tutorials}, {▪(RefLinkPlain[Solving Recurrence Equations, paclet:tutorial/SolvingRecurrenceEquations])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Equation Solving, paclet:guide/EquationSolving])}, {▪(RefLinkPlain[Discrete Calculus, paclet:guide/DiscreteCalculus])}, {▪(RefLinkPlain[Discrete Mathematics, paclet:guide/DiscreteMathematics])}, {▪(RefLinkPlain[Recurrence and Sum Functions, paclet:guide/RecurrenceAndSumFunctions])}, {▪(RefLinkPlain[Scientific Models, paclet:guide/ScientificModels])}, {▪(RefLinkPlain[Calculus, paclet:guide/Calculus])}, {▪(RefLinkPlain[Summation Transforms, paclet:guide/SummationTransforms])}})}})

({{(Spacer1), ({{(Spacer1)Related Links}, {(Spacer1)▪(RefLinkPlain[(Spacer1)Implementation notes: Algebra and Calculus, paclet:tutorial/SomeNotesOnInternalImplementation#25824])}})}})