生成n位k进制数并将其存储
分析
使用数组存储生成的n位k进制数,从起始串000……00开始,逐次加一,逢k进一。定义两个数组a[100],b[100],一个用于生成串的运算,一个用于存储串。
由于逐次加一,逢k进一每次运算方法相似所以适合用递归。
代码
//递归
#include<stdio.h>
int m=0;
void fun(int n,int k,int a[],int b[],int x)
{
if(n==0)
{
for(int c=0;c<x;c++)
{
b[m]=a[c];
printf("%d",b[m]);
m++;
}
printf("\n");
}
else
{
for(int i=k;i>=0;i--)
{
a[n-1]=i;
fun(n-1,k,a,b,x);
}
}
}
int main()
{
int n,k;
printf("输入n位k进制:\n");
scanf("%d %d",&n,&k);
if(n>0)
{
int a[100],b[100];
fun(n,k,a,b,n);
return 0;
}
else
{
printf("请输入n值大于零:\n");
return main();
}
}