反转子串的递归实现
public static String reverseString(String x)
{
if(x.length() <= 1) return x;
return reverseString(x.substring(1)) + s.charAt(0);
}
杨辉三角
这个程序可以用于打印n行的杨辉三角
//m表示行数,n表示列数
int f(int m,int n)
{
if(n==0||m=n)
return 1;
else
return f(m,n-1)+f(m-1,n-1)
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
printf("%d ",f(i,j));
}
printf("\n");
}
}
m个A,n个B,组成多少种全排列
第一个元素就只有两种情款,A或者B
int f(int m,int n)
{
if(m==0||n==0)
return 1;
return f(m-1,n) + f(m,n-1);
}
对整数n进行划分
void f(int n,int a[],int k)
{
if(n==0)
{
printf("%d",a[0]);
for(int i=1;i<k;i++)
printf("+%d",a[i]);
printf("\n");
return;
}
for(int i=n;i>0;i--)
{
if(k > 0 && i > a[k-1]) continue;
//这个判断保证了后面的数不大于前面的数从而避免了重复
a[k] = i;
f(n-i,a,k+1);
}
}