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 + "<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);
}
1から100:
For(1, i => i <= 100, i => i + 1, i => Console.WriteLine(i));
演習として100対1が残っています。
基本的に、現在の数値と方向(上または下)の2つのパラメーターを受け取る関数を記述します。次に、その数値を出力し、増減して、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;
}
}
}
}