下面介绍几种常见的递归案例希望对大家学习有所帮助
菲波那切数列:
C语言
#include<stdio.h>
int ff(int x,int a,int b);
int main()
{
int i,a,b,v;
int n;
printf("请输入初始数(例如:1 1):");
scanf("%d%d",&a,&b);
printf("请输入生成个数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
v=ff(i,a,b);
printf("%d ",v);
}
return 0;
}
int ff(int n,int a,int b)
{
int f;
if(n==1)
{
f=a;
}
else if(n==2)
{
f=b;
}
else
{
f=ff(n-2,a,b)+ff(n-1,a,b);
}
return f;
}
Python
def ff(n):
if n==1:
r=1
elif n==2:
r=2
else:
r=ff(n-1)+ff(n-2)
return r
n=int(input("输入个数:"))
for i in range(1,n+1):
print(ff(i),end='\t')
汉诺塔
#include"stdio.h"
void han(int n,char x,char y,char z);
void han(int n,char x,char y,char z)
{
if(n==1)
{
printf("\t%c--->%c\n",x,z);
}
else
{
han(n-1,x,z,y);
//han(1,x,y,z);
printf("\t%c--->%c\n",x,z);
han(n-1,y,x,z);
}
}
int main()
{
int n;
printf("Input number:");
scanf("%d",&n);
han(n,'X','Y','Z');
}
Python
def hh(n,x,y,z):
if n == 1:
print(x,'--->',z)
else:
hh(n-1,x,z,y)
print(x,'--->',z) #hh(1,x,y,z)
hh(n-1,y,x,z)
n=int(input('请输入x盘上的个数\n'))
hh(n,"X","Y","Z")
某数的阶乘
#include<stdio.h>
int jc(int j);
int main()
{
int s,i;
printf("请输入阶乘数= \n");
scanf("%d",&i);
s=jc(i);
printf("\t%d!= %d\n",i,s);
}
int jc(int j)
{
int k;
if (j==1)
{
k=1;
}
else
{
k=j*jc(j-1);
}
return k;
}
Python
#递归算法n!;
def dg(n):
if n==1:
r=1
else:
r=n*dg(n-1)
return r
n=int(input("输入一个正整数:\n"))
s=dg(n)
print(n,'!','=',s)
代码有点乱想到什么就写上了,希望大家多多包涵!