我想打一個函數,它會顯示數字1到100和100到1 我很困惑不知道怎麼去使用遞歸做到這一點出發?函數通過使用遞歸?
我不想做到這一點使用任何其他循環。 請給我提示並忽略我的提問方式,因爲我是新的C++和c#。
我想打一個函數,它會顯示數字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);
}
很少用大邏輯編碼,我無法理解值將如何從100返回到1,因爲沒有代碼? –
這顯示了堆棧和遞歸如何工作。這可能是該練習的目的。問:當執行空的'WriteLine()'時,內存中有多少個名爲'n'的變量?答:101。在轉折點處,所有方法仍然是「活動的」,等待執行第二個'WriteLine(n)'。 –
非常聰明,儘管它不會在頂部打印「100」。 – Rawling
打印編號從1到100
private void number(int n)
{
if (n == 100)
return;
Response.Write(n + "<br/>");
number(n + 1);
}
電話:
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);
}
一到一百:
number(0);
你可以爲執行遞歸
For(1, i => i <= 100, i => i + 1, i => Console.WriteLine(i));
作爲練習還剩一百一十個。
你寫一個函數,採用兩個參數,基本上是:當前數量和方向(向上或向下)。然後,你輸出數量,增加或減少並再次調用同一個函數,你已經達到0.1
,直到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++這樣的功能:
void printNumbers(int number)
{
if (i >= 1)
{
// 100 --> 1
cout << number << " ";
printNumbers(i-1);
// 1 --> 100
cout << number << " ";
}
}
用printNumbers調用你的函數(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;
}
}
}
}
[你嘗試過什麼(http://whathaveyoutried.com)?你對什麼感到困惑?你堅持什麼?請發佈您的當前代碼。 – Oded
這是功課嗎? –
1-100和100-1具有相同的功能? –