日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言如何實現一些算法或者函數你知道嗎_C 語言

作者:cy?Hunter ? 更新時間: 2022-05-02 編程語言

1.遞歸二分搜索

#include
using namespace std;
int a[100];
int pos = -1;

void binarysearch(int l, int r, int x){
	if(l > r)return;
	else{
		int mid = (l+r)/2;
		if(x == a[mid]) {
			pos = mid;
			return;
		}
		if(x < a[mid]) return binarysearch(l, mid-1, x);
		else return binarysearch(mid+1, r, x);
	}
}

int main(){
	int n;
	cin>>n; //輸入元素個數 
	for(int i=0; i>a[i];
	sort(a, a+n);
	binarysearch(0, n-1, 5);//二分搜索 
	cout<

結果示例

在這里插入圖片描述

2.遞歸歸并排序

C語言遞歸實現歸并排序

3.Ackerman函數

#include
using namespace std;
long Ackerman(long n, long m){
	if(n >= 0 && m >= 0){
		if(n == 1 && m == 0)return 2;
		if(n == 0 && m >= 0)return 1;
		if(n >= 2 && m == 0)return n+2;
		if(n >= 1 && m >= 1)return Ackerman(Ackerman(n-1, m), m-1);
	}
} 

int main(){
	long n, m;
	cin>>n>>m;
	cout<

結果示例

在這里插入圖片描述

4.Fibonacci數列

#include
using namespace std;
int fibonacci(int n){
	if(n == 1)return 1;
	else if(n == 2)return 1;
	else return fibonacci(n-1)+fibonacci(n-2);
	
}
int main(){
	int n;
	cin>>n;//返回斐波那契數列第幾項 
	cout<

結果示例

在這里插入圖片描述

5.遞歸求排列

#include
using namespace std;
int a[20], b[20];//a[]為排列的盒子,b[]為判斷元素是否放過的數組 
int n;
void perm(int k){//k表示開始放第k個數 
	if(k == n+1){//當k>n時說明第k個數已經放好,已經一組排列完畢 
		for(int i=1; i<=n; i++){
			cout<>n;//排列數個數 
	perm(1);//從放第一個數開始排列 
	return 0;
} 

示例結果

在這里插入圖片描述

6.求最大公約數

#include
using namespace std;
int gcd(int a, int b){
	return b==0?a:gcd(b, b%a);
} 
int main(){
	int a, b;
	cin>>a>>b;
	cout<

示例結果

在這里插入圖片描述

7.偶位數的大整數乘法

#include
using namespace std;
long mul(long x, long y, long n){
	if(x == 0 || y == 0)return 0;
	else if(n == 1)return x * y;
	else{
		long A = (long)x / pow(10, (long)(n/2));
		long B = x - A * pow(10, n/2);
		long C = (long)y / pow(10, (long)(n/2));
		long D = y - C * pow(10, n/2);
		long AC = mul(A, C, n/2);
		long BD = mul(B, D, n/2);
		long A_BD_C = mul((A - B),(D - C), n/2); 
		return AC * pow(10, n) + (A_BD_C + AC + BD)* pow(10, (long)(n/2)) + BD;
	}
}
int main(){
	long a, b, n, sign;
	if((a<0 && b>0) || (a>0 && b<0))sign = -1;
	else sign = 1;
	cin>>a>>b>>n;
	cout<

結果示例

在這里插入圖片描述

總結

原文鏈接:https://blog.csdn.net/qq_52785473/article/details/123178904

欄目分類
最近更新