【问题标题】:How do I return the value from a For loop in this fibonacci?如何从这个斐波那契的 For 循环中返回值?
【发布时间】:2017-01-01 13:02:38
【问题描述】:

如何从这个斐波那契的 For 循环中返回值?
现在它只是返回 send = 0。 我的目标是将值放入 M​​ain 方法中的列表中。

 public static int Fibo( int count) 
    {
        int i, f1 = 0, f2 = 1, send = 0;  
        for (i = 0; i <= count; i++)
        {
            int f3 = f1 + f2; 
            f3 = send;                
            f1 = f2;
            f2 = f3;
        }
        return send;
    }

【问题讨论】:

  • 循环永远不会返回值
  • 不,作业不会返回。你的代码返回return,你只是从来没有给send分配任何东西,除了0。
  • 更改方法以返回 IEnumerable&lt;int&gt; 并将行 f3 = send; 替换为 yield return f3;
  • 什么是send?它是在哪里定义的?
  • int i, f1 = 0, f2 = 1, send = 0;

标签: c# return fibonacci


【解决方案1】:

如果你想返回“send”,你需要在你的代码中写“send = f3;”

【讨论】:

  • @zx485 我不同意,这正是代码的问题,所以它实际上是问题的答案。
  • @EJoshuaS:你是对的。返回值必须设置在某处。
【解决方案2】:

如果您想将数字具体化到列表中,为什么不实现IEnumerable&lt;int&gt; 生成器?关键特性是使用yield return(返回并继续执行该例程)而不是return

public static IEnumerable<int> Fibo() {
  int left = 0;
  int right = 1;

  yield return left;
  yield return right;

  while (true) {
    int result = left + right;

    // returning from a loop while keep on looping
    yield return result;

    left = right;
    right = result; 
  }
}

....

List<int> myList = Fibo().Take(10);

【讨论】:

  • 谢谢德米特里。我会做更多的研究IEnumerable。 @CodeCaster 你怎么能判断我从他的回答中获得的知识量?
  • @CodeCaster 哇。 “不会教你任何东西”和“你的代码很糟糕,使用我的代码”完全是谬论。也许你擅长编码,但你肯定不擅长教学。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多