TEST SEVEN

TEST7
1.递归和非递归实现求第n个斐波那契数

#include <stdio.h>
#include <stdlib.h>

int Fib(int n) {
	if (n <= 2) {
		return 1;
	}
	return Fib(n - 1) + Fib(n - 2);
}

int FibN(int n) {
	int an,an_1 = 1, an_2 = 1;
	int i;
	if (n < 2) {
		return 1;
	}
	for (i = 2; i < n; ++i) {
		an = an_1 + an_2;
		an_2 = an_1;
		an_1 = an;
	}
	return an;
}

int main() {
	printf("%d\n", Fib(8));
	printf("%d\n", FibN(8));
	system("pause");
	return 0;
}

2.递归实现求n的k次方

#include <stdio.h>
#include <stdlib.h>

int Power(int n, int k) {
	if (k > 0) {
		return Power(n, k - 1)*n;
	}
	return 1;
}

int main() {
	printf("%d\n", Power(2, 3));
	system("pause");
	return 0;
}

3.写一个递归函数,输入一个非负整数,返回组成它的数字之和

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int DigitSum(int n) {
	if (n > 9) {
		return DigitSum(n / 10) + n % 10;
	}
	else {
		return n;
	}
}

int main() {
	int n = 0;
	printf("请输入一个非负整数: ");
	scanf("%d", &n);
	int ret = DigitSum(n);
	printf("组成它的数字之和为: %d\n", ret);
	system("pause");
	return 0;
}

4.递归实现字符串中的字符反向排列

#include <stdio.h>
#include <stdlib.h>

void reverse_string(char* string) {
	if (* string != '\0') {
		string++;  //一直向后进行统计元素
		reverse_string(string);
		printf("%c", *(string - 1));//从字符串最后一个元素输出
	}
}

int main() {
	char* string = "asdfgh";
	reverse_string(string);
	printf("\n");
	system("pause");
	return 0;
}

5.递归和非递归实现strlen

#include <stdio.h>
#include <stdlib.h>

int Strlen(char* string) {
	if (* string != '\0') {
		return 1 + Strlen(string + 1);
	}
	else {
		return 0;
	}
}

int StrlenN(char* string) {
	int count = 0;
	while (* string != '\0') {
		count++;
		string++;
	}
	return count;
}

int main(){
	char string[] = "asdfghjk";
	int ret_1 = Strlen(string);
	int ret_2 = StrlenN(string);
	printf("%d\n", ret_1);
	printf("%d\n", ret_2);
	system("pause");
	return 0;
}

6.递归和非递归实现求n的阶乘

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Factor(int n) {
	if (n <= 1) {
		return 1;
	}
	else {
		return n * Factor(n - 1);
	}
}

int FactorN(int n) {
	int ret = 1;
	int i = 0;
	for (i = 1; i <= n; ++i) {
		ret = ret * i;
	}
	return ret;
}

int main() {
	int n = 0;
	printf("请输入一个大于0的整数: ");
	scanf("%d", &n);
	printf("%d\n", Factor(n));
	printf("%d\n", FactorN(n));
	system("pause");
	return 0;
}

7.递归方式实现打印一个整数的每一位

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void Print(int n) {
	if (n < 10) {
		printf("%d ", n);
	}
	else {
		Print(n / 10);
		printf("%d ", n % 10);
	}
}

int main() {
	int n = 0;
	printf("请输入一个大于0的整数: ");
	scanf("%d", &n);
	Print(n);
	printf("\n");
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值