出力が「0,1,2,0」になっています。この関数呼び出しがどのように動作しているかを助けてください。私は、nを減じた後に文が実行されないなら、0より大きくないので、この疑いがあります。したがって、出力はありません。しかし結果は他のものです。if文と関数呼び出しの制御フロー
#include <stdio.h>
void fun(int);
int main(void)
{
int a=3;
fun(a);
return 0;
}
void fun(int n)
{
if(n > 0)
{
fun(--n);
printf("%d,", n);
fun(--n);
}
}
紙を取得し、通話シーケンスを書き出します。 'a'が小さいとすれば、それは簡単だろう。 – ForceBru
'printf'文をもう少し書いてください。例: 'if'ブロックの前に、その呼び出しで最初に' n'の値を知るためにもう1つの文を書きます。 – Cherubim
無礼は意味しませんが、どのような再帰がわかりますか?もしそうでなければ、例えばhttps://en.wikipedia.org/wiki/Recursion_(computer_science)でそれを読むことができます。あなたが知っているなら、あなたが質問の他の側面に焦点を当てることを知っているので、どのような再帰があなたの質問であるかを知っていることを追加してください。 –