使用递归function?

我想创建一个显示从1到100和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 + "
"); number(n + 1); }

呼叫:

 number(0); 

你可以做一个递归:

 public static void For( T initializer, Func condition, Func iterator, Action 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  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; } } } }