#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
void recursion (int a) {
if (a != 0) {
recursion(--a); //works
recursion(a--); //does not work
printf("%d\n", a);
}
}
int main (int argc, char *argv[]) {
printf("start\n");
recursion(10);
printf("finished\n");
return 0;
}
재귀 (a--) 할 때 세분화 오류가 발생하지만 왜 재귀 (-a) 할 때 제대로 작동합니까?- a vs a - 연산자 우선 순위
부작용이 하나 밖에 없기 때문에 정의되지 않은 동작으로 인해 재귀 (a--)가 잘못되었다고 생각하지 않습니다.이 부작용은 a를 1 씩 줄이는 것입니다.이 부작용은 내가 원하는 것입니다. 감사.
'--a'와'a -'의 차이점은 무엇입니까? 7 번째 줄과 8 번째 줄에'recursion'에 전달되는 실제 값에 대해 생각하십시오. – Ryan
'int tmp = a--; 재귀 (tmp);'<- 어때요? – zerkms
'recursion (a -);'매번 재귀 호출 (a);'매번 호출하면 감소하지만 더 이상 사용되지 않습니다. –