C에서 재귀 적 정적 함수를 작성할 수 있습니까?정적 함수에서 재귀가 가능합니까?
3
A
답변
3
예, 그렇습니다.
13
예. 함수에 static
을 적용하면 재귀 함수 (은)에있는 정적 변수와 다릅니다.
전자는 컴파일 링 장치 외부에서 함수를 볼 수 있는지 여부 만 제어합니다 (예 : 링커의 경우).
후자는 재귀 수준 당 하나가 아닌 모든 재귀 수준에 대해 변수의 복사본이 하나만 있다는 것을 의미합니다. 이는 일반적으로 필요한 것입니다.
그래서 :
static unsigned int fact (unsigned int n) {
if (n == 1U) return 1;
return n * fact (n-1);
}
은 괜찮지 만 : 정적 변수가 손상되기 때문에
static unsigned int fact (unsigned int n) {
static unsigned int local_n; // would be fine if not static!
local_n = n;
if (local_n == 1U) return 1;
return local_n * fact (local_n-1);
}
는 하지입니다.
3
#include <stdio.h>
static void count_to_five(void)
{
static int i = 0;
while (i < 5) {
i++;
printf("%d\n", i);
count_to_five();
}
puts("You are seeing this because I counted to five! (did not enter loop)\n");
return;
}
int main(void)
{
count_to_five();
return 0;
}
그렇습니다. i
의 정적 저장소는 각 호출이 count_to_five()
인 경우 해당 값을 유지한다는 것을 의미합니다. 그러나 count_to_five()
은 static
으로 정의 할 필요가 없습니다.
당신이 무엇을 요구하는지 알기가 매우 어렵습니다.
관련 문제
- 1. VB.NET에서 XML 리터럴을 사용한 재귀가 가능합니까?
- 2. 함수에서 정적 변수 선언하기
- 3. 다른 정적 함수에서 정적 함수를 호출하는 방법
- 4. 친구 함수에서 정적 변수 액세스
- 5. AS3의 정적 함수에서 비 정적 함수에 액세스하는 데 문제가 있습니다
- 6. PHP의 정적 함수에서 현재 개체를 반환하는 방법
- 7. QMainWindow가 열리면 정적 함수에서 QDialog 개체를 실행하십시오.
- 8. 왜이 무한 재귀가 아닌가요?
- 9. 재귀가 있거나없는 시퀀스
- 10. 는 재귀가 matlab에 자바
- 11. 최대 재귀가 모두 소모되었습니다
- 12. 재귀가 너무 많음
- 13. : 모델 재귀가 실패합니다.
- 14. 부모의 정적 함수에서 사용할 수없는 호출 된 자식 상수
- 15. PHP : 경고 : array_merge_recursive() : 재귀가 감지되었습니다.
- 16. 자바 스크립트에서 재귀가 얼마나 제한적입니까?
- 17. 문법의 왼쪽 재귀가 충돌을 가져옴
- 18. 프롤로그의 재귀가 발생하지 않는다고 생각합니다.
- 19. PHP에서 함수에서 호출 할 때마다 함수에서 선언 된 정적 변수가 다시 시작되지 않도록하려면 어떻게해야합니까?
- 20. 많은 메모리를 사용하는 함수에서 많은 정적 변수가 있습니까?
- 21. C#은 정적 함수에서 참조 할 수 없습니다.
- 22. 함수에서 정적 변수 사용 vs 호출자로부터 변수 전달
- 23. db 함수에서 트랜잭션 쿼리를위한 db 객체에 PHP 정적 $ 링크
- 24. 같은 클래스의 정적 함수에서 공용 이벤트를 호출하는 방법은 무엇입니까?
- 25. 비 정적 및 정적 데이터 및 함수
- 26. ASP.net 4.0 WebService 및 공용 정적 클래스가 가능합니까?
- 27. Console.ReadLine 오버로드가 가능합니까? (또는 임의의 정적 클래스 메서드)
- 28. XSL-FO : 지역 본문의 정적 컨텐츠 및 플로우 컨텐츠 : 가능합니까?
- 29. 클래스 인스턴스를 전달하지 않고 정적 멤버 함수에서 비 정적 멤버 함수를 호출하는 방법
- 30. QueryString 공유 함수에서
왜 안 되니? static은 funcions이 파일에 대해 로컬임을 의미합니다. – Anton
당신은 그것이 가능해서는 안되는 이유는 무엇입니까? 왜 그냥 시험해 보지 않으시겠습니까? – helpermethod
가까운 투표가 필요한 이유는 무엇입니까? 이것은 나에게 꽤 직설적 인 것처럼 보입니다. 나는 여기서 가장 밝은 사람이 될 수는 없습니다. 다시 투표하려면 투표하십시오. – paxdiablo