如何递归填充数组
How to fill an array recursively
您好,我了解如何使用循环迭代填充数组。但是为了理解并缩小与复杂性之间的差距,我想知道如何递归地解决这个问题。
问题是让 'n' 成为数组 'nums' 的索引。 nums 会将所有以前的数字存储在它的数组中。例如,n=6; nums = [0=6],[1=5],[2=4],[3=3],[4=2],[5=1].
static void Main(string[] args)
{
int n = 6;
int[] nums = new int[n];
for(int i = 0;i < nums.Length; i++)
{
Console.WriteLine(fillArray(nums, n)[i]); //expected output 6,5,4,3,2,1
}
}
static int[] fillArray(int[] nums, n)
{
for(int i = 0; i< nums.Length; i++)
{
nums[i] = n--;
}
return nums;
}
非常感谢,感谢大家的回复!
你可以试试这个:
static void fillArray(int[] nums, int index, int n)
{
if(index == nums.Length)
{
return;
}else
{
nums[index] = n;
fillArray(nums, index + 1, n - 1);
}
}
static void Main(string[] args)
{
int n = 6;
int[] nums = new int[n];
fillArray(nums, 0, n);
for(int i = 0;i < nums.Length; i++)
{
Console.WriteLine(nums[i]); //expected output 6,5,4,3,2,1
}
}
您好,我了解如何使用循环迭代填充数组。但是为了理解并缩小与复杂性之间的差距,我想知道如何递归地解决这个问题。
问题是让 'n' 成为数组 'nums' 的索引。 nums 会将所有以前的数字存储在它的数组中。例如,n=6; nums = [0=6],[1=5],[2=4],[3=3],[4=2],[5=1].
static void Main(string[] args)
{
int n = 6;
int[] nums = new int[n];
for(int i = 0;i < nums.Length; i++)
{
Console.WriteLine(fillArray(nums, n)[i]); //expected output 6,5,4,3,2,1
}
}
static int[] fillArray(int[] nums, n)
{
for(int i = 0; i< nums.Length; i++)
{
nums[i] = n--;
}
return nums;
}
非常感谢,感谢大家的回复!
你可以试试这个:
static void fillArray(int[] nums, int index, int n)
{
if(index == nums.Length)
{
return;
}else
{
nums[index] = n;
fillArray(nums, index + 1, n - 1);
}
}
static void Main(string[] args)
{
int n = 6;
int[] nums = new int[n];
fillArray(nums, 0, n);
for(int i = 0;i < nums.Length; i++)
{
Console.WriteLine(nums[i]); //expected output 6,5,4,3,2,1
}
}