通过使用递归功能

Function by using Recursion?

本文关键字:递归 功能      更新时间:2023-10-16

我想制作一个函数,该函数将显示从1到100到1的数字我感到困惑的是,如何使用递归可以做到这一点?

我不想使用任何其他循环进行此操作。请给我提示,而忽略我的询问方式,因为我是C 和C#。

void Print100(int n)
{
   if (n > 100)
   {
       Console.WriteLine();  // cosmetic
       return;               // stop recursing
   }
   Console.WriteLine(n);     // 1-100
   Print100(n+1);            // recurse
   Console.WriteLine(n);     // 100-1, on the way out
}

void Main()
{
    Print100(1);
}

用于打印数字从1到100

private void number(int n)
        {
            if (n == 100)
                return;
            Response.Write(n + "<br/>");
            number(n + 1);
        }

呼叫:

number(0);

您可以为:

做递归
public static void For<T>(
    T initializer,
    Func<T, bool> condition,
    Func<T, T> iterator,
    Action<T> action)
{
    if (!condition(initializer)) return;
    action(initializer);
    For(iterator(initializer), condition, iterator, action);
}

一到一百:

For(1, i => i <= 100, i => i + 1, i => Console.WriteLine(i));

左右为练习。

您编写一个函数,该函数基本上是两个参数:当前数字和方向(向上或向下)。然后,您输出该数字,增加或减少它,然后再次调用相同的功能,直到您达到0。

您可以在C 中使用此功能:

    void printNumbers(int number)
    {
       if (i >= 1) 
       {
          // 100 --> 1
          cout << number << " ";
          printNumbers(i-1);
          // 1 --> 100
          cout << number << " ";
       }
    }

使用PrintNumbers(100)

调用您的功能

希望这会有所帮助!

c#

public void recurseInts( int start, int finish ){
 if( start > finish ) return;
 Console.WriteLine(start);
 Console.WriteLine(finish - start);
 recurseInts(start + 1 , finish);
}
recurseInts(0,100);

我认为这就是您想要的C

#include <iostream>
using namespace std;
void recur(int start, int end,bool asc){
    cout << start << endl;
    if(!asc && start==0)return;
    if(start == end) asc = false;
    asc?start++:start--;
    recur(start, end, asc);
}
int main(){
    recur(0, 100,true);
    system("pause");
    return 0;
}

复制此代码并提交您的作业:

class Program
{
    public static bool forward = false;
    public static bool stop = false;
    static void Main(string[] args)
    {
        PrintNumbers(0);
        Console.ReadLine();
    }
    private static void PrintNumbers(int i)
    {
        if (i <= 100 && !forward)
        {
            Console.WriteLine(i);
            if (i == 100)
            {
                forward = true;
            }
            PrintNumbers(i + 1);
        }
        if (i >= 0  && i < 100 && forward && !stop)
        {

            Console.WriteLine(i);
            PrintNumbers(i - 1);
            if (i==0)
            {
                stop = true;
            }
        }
    }
}