首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#递归函数中,For循环计数器始终重置

在C#递归函数中,For循环计数器始终重置
EN

Stack Overflow用户
提问于 2018-09-27 06:34:53
回答 4查看 497关注 0票数 0

我有一个奇怪的问题,我不能完全理解它。希望有人能对此有所了解。

我在一个递归函数中有一个for循环,即使循环计数器是该类的实例变量,它也总是被重置。为什么?代码如下:

代码语言:javascript
复制
public class Products{
    private int loopCounter=1;
    private int loop=10;
    public int ProductCount {get;set;}
    public int GetProducts(int Take, int Skip)
    {
        //code that sets ProductCount is removed
        for (int loopCounter = 1; loopCounter < loop; loopCounter++)
        {
            //Depending on ProductCount, Take and Skip values are
            //computed and passed to GetProducts. This code removed for brevity and am hard coding them
            GetProducts(10,5);
            //code to process GetProducts output removed
        }
    } 
}

由于我不明白的原因,loopCounter总是被重置为1,循环永远继续下去。循环不应该在10次迭代后停止吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-27 06:41:42

每次调用函数时,都会在for循环的开头创建和设置一个新的方法级变量loopCounter。如果要使用类级别变量,则应该删除for循环的第一部分(类似于for(; loopCounter < loop; loopCounter++)

也就是说,我不推荐使用循环来控制这样的递归。最好是只使用一个循环,或者在达到边界条件时让GetProducts返回。

代码语言:javascript
复制
public class Products{
private int loopCounter=1;
private int loop=10;
public int ProductCount {get;set;}
public int GetProducts(int Take, int Skip)
{
    if(loopCounter >= loop) return;
    loopCounter++;
    //code that sets ProductCount is removed
    //Depending on ProductCount, Take and Skip values are
    //computed and passed to GetProducts. This code removed for brevity and am hard coding them
    GetProducts(10,5);
    //code to process GetProducts output removed
} 
票数 3
EN

Stack Overflow用户

发布于 2018-09-27 06:45:03

我认为变量loopCounter与全局变量不同,每次调用函数时都会创建一个新的变量,尝试从for循环中删除这个:int loopCounter = 1

票数 1
EN

Stack Overflow用户

发布于 2018-09-27 06:48:20

除了GetProducts()之外,我可能对循环中的实际内容感到有点困惑,但似乎您没有停止的条件。从1开始运行一次循环,然后再次调用该函数,并从1开始创建一个新的循环。您需要创建一个条件来停止这种无限调用机制,以便它将返回到已经存在的调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52526908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档