-6
void fun(int n)
{
if(n > 0) {
fun(--n);
printf("%d", n);
fun(--n);
}
}
如何評估以下代碼?它給出的輸出爲0 1 2 0請解釋如何評估下面的遞歸代碼?
void fun(int n)
{
if(n > 0) {
fun(--n);
printf("%d", n);
fun(--n);
}
}
如何評估以下代碼?它給出的輸出爲0 1 2 0請解釋如何評估下面的遞歸代碼?
fun(3) //n=3
func(2) // n = 3, (--n) = 2
func(1) // n = 2, (--n) = 1
func(0) // n = 1, (--n) = 0
printf("%d", 0) // n=0 **Got 0 **
func(-1) // n = 0, (--n) = -1
printf("%d",1) // n = 1 **Got 0 1**
func(0) // n = 1, (--n) = 0
printf("%d", 2) // n =2 "Got 0 1 2"
func(1) // n = 2, (--n) = 1
func(0) // n = 1, (--n) = 0
printf("%d", 0) // n=0 ***Got 0 1 2 0*
func(-1) // n = 0, (--n) = -1
該代碼什麼都不做,因爲它只是一個函數。函數如何被調用?另外,這功課呢?你試圖理解它嗎? – Njol
查看http://stackoverflow.com/questions/21458724/please-explain-how-the-following-recursive-code-is-evaluated獲取更多信息 –
我很驚訝它運行在所有它缺少的一個} – mikea