寒假作业2024.2.11

请使用递归实现n!

#include 
#include 
#include 
#include 
#include 
int  fun(int n) 
{
    if (n==0) 
	{
        return 1;
    } else 
	{
        return n*fun(n-1);
    }
}
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
    int sum=fun(n);
    printf("%d的阶乘是: %d\n",n,sum);
	return 0;
}

寒假作业2024.2.11_第1张图片
请使用递归实现O-n的和

#include 
#include 
#include 
#include 
#include 
int fun(int n)
{
    if(n==0)
        return 0;
    else
        return n+fun(n-1);
}
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
    int sum=fun(n);
    printf("0-%d的和是: %d\n",n,sum);
	return 0;
}

寒假作业2024.2.11_第2张图片
请使用递归实现斐波那契

#include 
#include 
#include 
#include 
#include 
int fun(int n)
{
	if(n==1||n==2)
	{
		return 1;
	}
	else
	{
		return fun(n-1)+fun(n-2);
	}
}

int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");//n为打印的数列层数
	scanf("%d",&n);
	printf("斐波那契数列:");
	for(int i=1;i<=n;i++)
	{
		printf("%d ",fun(i));
	}
	puts("");
	return 0;
}

寒假作业2024.2.11_第3张图片
请使用递归实现二进制转换

#include 
#include 
#include 
#include 
#include 
void Exchange(int n)
{
	if(n==0)
	{
		return ;	
	}
	else
	{
		Exchange(n/2);
		printf("%d",n%2);
	}	
} 

int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
	printf("十进制数%d转换为二进制数为:",n);
	Exchange(n);
	puts("");
	return 0;
}

寒假作业2024.2.11_第4张图片
请递归实现计算各个位数字之和

#include 
#include 
#include 
#include 
#include 
int fun(int n)
{
	if(n==0)
		return 0;
	else
		return n%10+fun(n/10);
}
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
	int sum=fun(n);
	printf("sum=%d\n",sum);
	return 0;
}

寒假作业2024.2.11_第5张图片
请递归实现计算各个位数字的乘积

#include 
#include 
#include 
#include 
#include 
int fun(int n)
{
	if(n<10)
		return n;
	else
	{
		return n%10*fun(n/10);
	}
}
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
	int sum=fun(n);
	printf("sum=%d\n",sum);
	return 0;
}

寒假作业2024.2.11_第6张图片
请使用递归实现计算单词逆置

#include 
#include 
#include 
#include 
#include 
//整体逆置+单词逆置
void reverseAll(char str[], int start, int end) 
{  
	if(end-start<1)
	{
		return ;  
	}
	else
	{	
		char t=str[start];
		str[start]=str[end];
		str[end]=t;
		reverseAll(str,start+1,end-1); 
	}
}  

//逆置单词  
void reverseWords(char str[],int len) 
{  
	int start=0;  
	int end=0;  
	// 先逆置整个字符串  
	reverseAll(str,0,len-1);  
	// 再逆置每个单词  
	while (end

寒假作业2024.2.11_第7张图片

你可能感兴趣的:(算法)