由於用戶BLUEPIXY,Code2應該表示等同於Code1的遞歸算法。但是,我不完全確定Code2確實是遞歸的:可以有這樣的條件嗎?等價於迭代算法的遞歸
if(n>0){
func();
times(--n, func);
}
你不應該有一個明確的基本情況嗎?請,你能澄清一下嗎?
代碼1:
#include <stdio.h>
void printValue();
int main(){
int n = 100;
int i;
for (i=0; i<n; i+=1)
printValue();
}
void printValue(){
static unsigned int y = 0;
printf("y = %d", y);
y+=1;
}
代碼2:
#include <stdio.h>
void printValue(void);
void times(int n, void (*func)(void)){
if(n>0){
func();
times(--n, func);
}
}
int main (void){
int n = 100;
times(n, printValue);
return 0;
}
void printValue(void){
static unsigned int y = 0;
printf("y = %d\n", y);
y+=1;
}
代碼看起來不錯,遞歸看起來很好 –
你是什麼意思'一個明確的基本情況'?你有沒有試過運行兩種解決方案來說服你自己的輸出是一樣的? – John3136
@ John3136我看到輸出是一樣的,但我不完全確定code2是一個遞歸算法。你能解釋爲什麼它是遞歸的嗎? – mathlearner