c# - 如何在 C# 中返回数组斐波那契数?
问题描述
我想创建一个函数,它将整数数组作为输入,并将 int 数组打印为斐波那契数列,例如:第三个元素 = 第二个元素 + 第一个元素。
到目前为止,这是我的代码:
static void Result(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] < 0)
Console.WriteLine("arr[i]", arr[i], " number to get must be greater or equal than 0");
var n = arr[i] + 1;
var a = new int[n];
arr[0] = 0;
if (arr[i] == 0)
{
a[1] = 1;
}
for ( i = 2; i < n; i++)
{
a[i] = a[i - 2] + a[i - 1];
}
}
}
public static void Main()
{
int[] arr = {7, 8, 3, 9, 11,16,14,91, };
Result(arr);
}
解决方案
如果输入是: 1 ,3 ,4 ,6, 7 ,8 10, 11, 15 ,25 输出应该是: 1, 3, 4, 7, 11 所以 1+3=4, 4+3=7 等等.
我看了你的代码,你很接近。
最大的问题是,i = 0
如果您尝试访问arr[-1]
和arr[-2]
.
我们可以从 开始解决这个问题i = 2
。
例如:
static int[] Result(int[] arr)
{
int[] result = arr;
for (int i = 2; i < arr.Length; i++)
{
result[i] = result[i-1] + result[i-2];
}
return result;
}
int[] arr = { 1 ,3 ,4 ,6, 7 ,8, 10, 11, 15 ,25 };
arr = Result(arr);
Console.WriteLine(string.Join(", ",arr));
// outputs: 1, 3, 4, 7, 11, 18, 29, 47, 76, 123
另一个注意事项是,除非你将'int[] arr
作为引用传递,否则你需要返回一个 newint[]
作为结果,因为Result()
' 的更改arr
不会反映在数组上。
推荐阅读
- java - 未知 URL:content://media/external/audio/media/null?
- javascript - 使用 Javascript,如何检查用户的输入是否满足所有条件,然后显示输出?
- apache-kafka - 卡夫卡多消费者
- centos7 - Centoswebpanel roundcube 500 内部服务器错误
- python - d = d + 1 在没有 for 循环的函数内(python)
- javascript - 如何使用 jQuery 进行 AJAX 调用?
- tkinter - tkinter - Visual Studio代码调试和命令行之间的字体不一致
- c# - 帮我修复我的代码无法将其从 java 转换为 c#
- c# - 如何使用匿名类型进行分组
- python-3.x - 如何从两个字符串中生成最短的字符串