C 언어는 귀속에 관한 몇 가지 기초 문제와 사고방식
1. 귀환과 비귀환은 각각 n번째 피보나 계수를 구한다.
사고방식: 피보나치수는 1, 1, 2, 3, 5, 8... 뒤의 수는 앞의 두 수를 더하고 첫 번째 수와 두 번째 수는 1이다.돌아가는 사고방식은 매우 간단하다. 들어오는 값이 2보다 작으면 1로 돌아가면 된다.전송된 값이 2보다 크면 본 함수를 다시 호출하여 그의 앞수와 앞수를 구한다.코드는 다음과 같습니다.int fib1(int n)//
{
if (n > 2)
{
return fib1(n - 2) + fib1(n - 1);
}
else
{
return 1;
}
}
귀속되지 않는 방법: 값을 이용하여 저장을 변환하고 낮은 위치에서 높은 위치로 구하며 전입 값으로 순환 횟수를 얻는다. 코드는 다음과 같다.int fib2(int n)//
{
if (n < 3)
{
return 1;
}
else
{
int a = 1;
int b = 1;
int sum = 0;
for (int i = 3; i <= n; i++)
{
sum = a + b;
a = b;
b = sum;
}
return sum;
}
}
귀환의 단점, 예를 들어 비교적 큰 수를 입력하면 귀환 횟수가 너무 많아 프로그램이 붕괴될 수 있다.
2. 함수를 작성하여 n^k를 실현하고 귀속 실현을 사용
사고방식: 귀착의 종점은 바로 k=1일 때 n으로 돌아가는 것이다.0이 되면 1도 반환됩니다.기타 시 n* 귀속 함수 (n,k-1) 코드는 다음과 같습니다int fun(int n, int k)
{
if (k == 0)
{
return 1;
}
else if (k == 1)
{
return n;
}
else
{
return n*fun(n, k - 1);
}
}
3. 반복 함수인 DigitSum(n)을 쓰고 음수가 아닌 정수를 입력하여 구성된 숫자의 합을 반환합니다.
예를 들어DigitSum(1729)을 호출하면 1 + 7 + 2 + 9로 돌아가야 한다. 그의 합은 19 사고방식이다. 귀속 종지 조건이 무엇인지 판단하고 값이 있을 때 한 자릿수가 있으면 그의 값을 직접 되돌릴 수 있다.어떻게 종료 조건으로 축소합니까? 매번 호출할 때마다 10을 나누면 현재 위치를 제거할 수 있습니다.코드는 다음과 같습니다.int DigitSum(int n)
{
int sum = 0;
if (n < 10)
return n;
else
sum = n % 10;//sum
n = n / 10;
sum = sum + DigitSum(n);
return sum;
}
4. 함수 Reverse 작성string(char * string)(반복 실행)
실현: 매개 변수 문자열의 문자를 반대로 배열합니다.요구사항: C 함수 라이브러리의 문자열을 사용하여 함수를 조작할 수 없습니다.사고: 귀속 종지 조건은 인용 바늘이'\0'일 때 되돌아오는 것이다.매번 마지막 값을 첫 번째 값에 부여한 다음 마지막 값을'\0'으로 설정하여 범위를 좁힌다.코드는 다음과 같습니다.char* inverse_buy(char* string)
{
assert(string);// string ,
if (*string == '\0')
{
return;
}
else
{
int len = strlen(string);
char temp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';//
inverse_buy(string + 1);
string[len - 1] = temp;// ,
}
}
5. 귀환과 비귀환은 각각strlen을 실현한다
비귀속 사고방식:while 순환으로 현재 인용된 값을 판단할 때마다'\0'이고 순환체 내부에 계수기 i를 증가하면 순환이 끝나면 현재 i값을 되돌려줍니다.코드는 다음과 같습니다.int my_strlen1(const char* string)
{
assert(string);// string ,
int i = 0;//
while (*(string+i))
{
i++;
}
return i;
}
귀속 사고방식: 귀속 종지 조건, 현재 인용이'\0'이 되면 종지 조건을 판단한다.매번 일련을 추가한 후 돌아가는 바늘의 다음 위치에서 종료 조건까지.코드는 다음과 같습니다.int my_strlen2(const char*string)
{
assert(string);
if (*string == '\0')
{
return 0;
}
else
{
return my_strlen2(string+1) + 1;
}
6.귀환과 비귀환은 각각 n의 곱셈을 실현한다
귀환 사고방식: 귀환 중지 조건은 첫 번째 수나 두 번째 수일 때 1을 되돌려 매번 현재 값 n으로 곱하기(n-1)!코드는 다음과 같습니다.int factorial(int n)
{
if (n == 1||n==0)
return 1;
else
return n*factorial(n - 1);
}
비귀속 사고방식: 순환을 이용하여 매번 현재 값을 곱할 때마다 1의 값을 줄이고 코드는 다음과 같다.int factorial2(int n)
{
int i = 0;
int sum = 0;
if (n == 1 || n == 0)
return 1;
for (i = n-1; i > 1; i--)
{
n= n*i;
}
return n;
}
7. 하나의 정수를 인쇄하는 모든 것을 귀속 방식으로 실현한다
사고방식: 종지 조건은 전송된 N값이 10보다 적을 때 현재 값을 직접 인쇄하고 인쇄할 때마다 현재 최저 위치를 인쇄하며 매번 귀속 조건은 현재 값을 10으로 나누면 귀속 범위를 줄일 수 있다.코드는 다음과 같습니다.void my_print(int n)
{
if (n >10)
{
printf("%d
", n % 10);
my_print(n / 10);
}
else
{
printf("%d
", n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
int fib1(int n)//
{
if (n > 2)
{
return fib1(n - 2) + fib1(n - 1);
}
else
{
return 1;
}
}
int fib2(int n)//
{
if (n < 3)
{
return 1;
}
else
{
int a = 1;
int b = 1;
int sum = 0;
for (int i = 3; i <= n; i++)
{
sum = a + b;
a = b;
b = sum;
}
return sum;
}
}
사고방식: 귀착의 종점은 바로 k=1일 때 n으로 돌아가는 것이다.0이 되면 1도 반환됩니다.기타 시 n* 귀속 함수 (n,k-1) 코드는 다음과 같습니다
int fun(int n, int k)
{
if (k == 0)
{
return 1;
}
else if (k == 1)
{
return n;
}
else
{
return n*fun(n, k - 1);
}
}
3. 반복 함수인 DigitSum(n)을 쓰고 음수가 아닌 정수를 입력하여 구성된 숫자의 합을 반환합니다.
예를 들어DigitSum(1729)을 호출하면 1 + 7 + 2 + 9로 돌아가야 한다. 그의 합은 19 사고방식이다. 귀속 종지 조건이 무엇인지 판단하고 값이 있을 때 한 자릿수가 있으면 그의 값을 직접 되돌릴 수 있다.어떻게 종료 조건으로 축소합니까? 매번 호출할 때마다 10을 나누면 현재 위치를 제거할 수 있습니다.코드는 다음과 같습니다.int DigitSum(int n)
{
int sum = 0;
if (n < 10)
return n;
else
sum = n % 10;//sum
n = n / 10;
sum = sum + DigitSum(n);
return sum;
}
4. 함수 Reverse 작성string(char * string)(반복 실행)
실현: 매개 변수 문자열의 문자를 반대로 배열합니다.요구사항: C 함수 라이브러리의 문자열을 사용하여 함수를 조작할 수 없습니다.사고: 귀속 종지 조건은 인용 바늘이'\0'일 때 되돌아오는 것이다.매번 마지막 값을 첫 번째 값에 부여한 다음 마지막 값을'\0'으로 설정하여 범위를 좁힌다.코드는 다음과 같습니다.char* inverse_buy(char* string)
{
assert(string);// string ,
if (*string == '\0')
{
return;
}
else
{
int len = strlen(string);
char temp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';//
inverse_buy(string + 1);
string[len - 1] = temp;// ,
}
}
5. 귀환과 비귀환은 각각strlen을 실현한다
비귀속 사고방식:while 순환으로 현재 인용된 값을 판단할 때마다'\0'이고 순환체 내부에 계수기 i를 증가하면 순환이 끝나면 현재 i값을 되돌려줍니다.코드는 다음과 같습니다.int my_strlen1(const char* string)
{
assert(string);// string ,
int i = 0;//
while (*(string+i))
{
i++;
}
return i;
}
귀속 사고방식: 귀속 종지 조건, 현재 인용이'\0'이 되면 종지 조건을 판단한다.매번 일련을 추가한 후 돌아가는 바늘의 다음 위치에서 종료 조건까지.코드는 다음과 같습니다.int my_strlen2(const char*string)
{
assert(string);
if (*string == '\0')
{
return 0;
}
else
{
return my_strlen2(string+1) + 1;
}
6.귀환과 비귀환은 각각 n의 곱셈을 실현한다
귀환 사고방식: 귀환 중지 조건은 첫 번째 수나 두 번째 수일 때 1을 되돌려 매번 현재 값 n으로 곱하기(n-1)!코드는 다음과 같습니다.int factorial(int n)
{
if (n == 1||n==0)
return 1;
else
return n*factorial(n - 1);
}
비귀속 사고방식: 순환을 이용하여 매번 현재 값을 곱할 때마다 1의 값을 줄이고 코드는 다음과 같다.int factorial2(int n)
{
int i = 0;
int sum = 0;
if (n == 1 || n == 0)
return 1;
for (i = n-1; i > 1; i--)
{
n= n*i;
}
return n;
}
7. 하나의 정수를 인쇄하는 모든 것을 귀속 방식으로 실현한다
사고방식: 종지 조건은 전송된 N값이 10보다 적을 때 현재 값을 직접 인쇄하고 인쇄할 때마다 현재 최저 위치를 인쇄하며 매번 귀속 조건은 현재 값을 10으로 나누면 귀속 범위를 줄일 수 있다.코드는 다음과 같습니다.void my_print(int n)
{
if (n >10)
{
printf("%d
", n % 10);
my_print(n / 10);
}
else
{
printf("%d
", n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
int DigitSum(int n)
{
int sum = 0;
if (n < 10)
return n;
else
sum = n % 10;//sum
n = n / 10;
sum = sum + DigitSum(n);
return sum;
}
실현: 매개 변수 문자열의 문자를 반대로 배열합니다.요구사항: C 함수 라이브러리의 문자열을 사용하여 함수를 조작할 수 없습니다.사고: 귀속 종지 조건은 인용 바늘이'\0'일 때 되돌아오는 것이다.매번 마지막 값을 첫 번째 값에 부여한 다음 마지막 값을'\0'으로 설정하여 범위를 좁힌다.코드는 다음과 같습니다.
char* inverse_buy(char* string)
{
assert(string);// string ,
if (*string == '\0')
{
return;
}
else
{
int len = strlen(string);
char temp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';//
inverse_buy(string + 1);
string[len - 1] = temp;// ,
}
}
5. 귀환과 비귀환은 각각strlen을 실현한다
비귀속 사고방식:while 순환으로 현재 인용된 값을 판단할 때마다'\0'이고 순환체 내부에 계수기 i를 증가하면 순환이 끝나면 현재 i값을 되돌려줍니다.코드는 다음과 같습니다.int my_strlen1(const char* string)
{
assert(string);// string ,
int i = 0;//
while (*(string+i))
{
i++;
}
return i;
}
귀속 사고방식: 귀속 종지 조건, 현재 인용이'\0'이 되면 종지 조건을 판단한다.매번 일련을 추가한 후 돌아가는 바늘의 다음 위치에서 종료 조건까지.코드는 다음과 같습니다.int my_strlen2(const char*string)
{
assert(string);
if (*string == '\0')
{
return 0;
}
else
{
return my_strlen2(string+1) + 1;
}
6.귀환과 비귀환은 각각 n의 곱셈을 실현한다
귀환 사고방식: 귀환 중지 조건은 첫 번째 수나 두 번째 수일 때 1을 되돌려 매번 현재 값 n으로 곱하기(n-1)!코드는 다음과 같습니다.int factorial(int n)
{
if (n == 1||n==0)
return 1;
else
return n*factorial(n - 1);
}
비귀속 사고방식: 순환을 이용하여 매번 현재 값을 곱할 때마다 1의 값을 줄이고 코드는 다음과 같다.int factorial2(int n)
{
int i = 0;
int sum = 0;
if (n == 1 || n == 0)
return 1;
for (i = n-1; i > 1; i--)
{
n= n*i;
}
return n;
}
7. 하나의 정수를 인쇄하는 모든 것을 귀속 방식으로 실현한다
사고방식: 종지 조건은 전송된 N값이 10보다 적을 때 현재 값을 직접 인쇄하고 인쇄할 때마다 현재 최저 위치를 인쇄하며 매번 귀속 조건은 현재 값을 10으로 나누면 귀속 범위를 줄일 수 있다.코드는 다음과 같습니다.void my_print(int n)
{
if (n >10)
{
printf("%d
", n % 10);
my_print(n / 10);
}
else
{
printf("%d
", n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
int my_strlen1(const char* string)
{
assert(string);// string ,
int i = 0;//
while (*(string+i))
{
i++;
}
return i;
}
int my_strlen2(const char*string)
{
assert(string);
if (*string == '\0')
{
return 0;
}
else
{
return my_strlen2(string+1) + 1;
}
귀환 사고방식: 귀환 중지 조건은 첫 번째 수나 두 번째 수일 때 1을 되돌려 매번 현재 값 n으로 곱하기(n-1)!코드는 다음과 같습니다.
int factorial(int n)
{
if (n == 1||n==0)
return 1;
else
return n*factorial(n - 1);
}
비귀속 사고방식: 순환을 이용하여 매번 현재 값을 곱할 때마다 1의 값을 줄이고 코드는 다음과 같다.
int factorial2(int n)
{
int i = 0;
int sum = 0;
if (n == 1 || n == 0)
return 1;
for (i = n-1; i > 1; i--)
{
n= n*i;
}
return n;
}
7. 하나의 정수를 인쇄하는 모든 것을 귀속 방식으로 실현한다
사고방식: 종지 조건은 전송된 N값이 10보다 적을 때 현재 값을 직접 인쇄하고 인쇄할 때마다 현재 최저 위치를 인쇄하며 매번 귀속 조건은 현재 값을 10으로 나누면 귀속 범위를 줄일 수 있다.코드는 다음과 같습니다.void my_print(int n)
{
if (n >10)
{
printf("%d
", n % 10);
my_print(n / 10);
}
else
{
printf("%d
", n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
void my_print(int n)
{
if (n >10)
{
printf("%d
", n % 10);
my_print(n / 10);
}
else
{
printf("%d
", n);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.