//递归和非递归分别实现第n个斐波那契数
//递归:
#include<stdio.h>
#include<windows.h>
int fib(int n){
if (n <= 2){
return 1;
}
return fib(n - 1)+fib(n - 2);
}
int main(){
printf("please input a number:");
int a;
scanf_s("%d", &a);
int ret=fib(a);
printf("%d\n", ret);
system("pause");
return 0;
}
//非递归
#include<stdio.h>
#include<windows.h>
int fib2(int n){
int first=1;
int second=1;
int third=1;
while (n > 2)
{
third = first + second;
first = second;
second = third;
n--;
}
return third;
}
int main(){
printf("Please input a number:");
int a;
scanf_s("%d", &a);
int ret=fib2(a);
printf("%d\n", ret);
system("pause");
return 0;
}
//编写一个函数实现n^k,使用递归实现
#include<stdio.h>
#include<windows.h>
int order(int n, int k){
if (k == 0)
{
return 1;
}
else{
return n*order(n, k - 1);
}
}
int main(){
printf("Please input two numbers:");
int n;
int k;
scanf_s("%d", &n);
scanf_s("%d", &k);
int result = order(n, k);
printf("%d\n", result);
system("pause");
return 0;
}
//写一个递归函数DigSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigtSum(1729),则应该返回1+7+2+9,它的和是19
#include<stdio.h>
#include<windows.h>
int DigSum(n){
if (n == 0){
return 0;
}
return (n % 10) + DigSum(n / 10);
}
int main(){
printf("Please input a number:");
int n= 0;
scanf_s
("%d", &n);
int result = DigSum(n);
printf("%d", result);
system("pause");
return 0;
}
//编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。
#include<stdio.h>
#include<windows.h>
void reverse_string(char *string){
static int j;
if (*(++string) != '\0')
{
reverse_string(string);
}
printf("%c", *(string - 1));
}
int main(){
char str[] = { "abcdef" };
reverse_string(str);
printf("\n");
system("pause");
return 0;
}
//递归和非递归分别实现求n的阶乘
#include<stdio.h>
#include<windows.h>
int fact1(int n)
{
if (n <= 1)
{
return 1;
}
return n*fact1(n - 1);
}
int fact2(int n){
int result = 1;
while (n > 1){
result *= n;
n -= 1;
}
return result;
}
int main(){
printf("Please inpute a number:");
int a;
scanf_s("%d", &a);
int res = fact1(a);
printf("%d\n", res);
int res2 = fact2(a);
printf("%d\n", res2);
system("pause");
return 0;
}
//递归方式实现打印一个整数的每一位
#include<stdio.h>
#include<windows.h>
void print(int n)
{
if (n > 9)
{
print(n / 10);
}
printf("%d ",n % 10);
}
int main(){
printf("Please input a number:");
int a;
scanf_s("%d", &a);
print(a);
system("pause");
return 0;
}
// 递归和非递归分别实现strlen
#include<stdio.h>
#include<windows.h>
int Strlen(const char *str)
{
if (*str == '\0')
{#endif
return 0;
}
else return 1 + Strlen(str + 1);
}
int main(){
char *p = "abcdef";
int len = Strlen(p);
printf("%d\n", len);
system("pause");
return 0;
}
#include<stdio.h>
#include<windows.h>
int Strlen(const char *str){
int count = 0;
while (*str != 0)
{
str++;
count++;
}
return count;
}
int main(){
char *str = "abcdef";
int res = Strlen(str);
printf("%d\n", res);
system("pause");
return 0;
}
C language recursive function implementation
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=326628304&siteId=291194637
Recommended
Ranking