使用递归函数练习

练习1:使用递归函数实现求n的k次方

     1	//使用递归实现求n的k次方
     2	#include<stdio.h>
     3	#include<string.h>
     4	int qiu_ci_fang(int i,int j) //求次方函数
     5	{
     6		if(j==0)
     7		{
     8			return 1;
     9		}
    10		else 
    11		{
    12			return i*qiu_ci_fang(i,j-1);
    13		}
    14	}
    15	int main(int argc, const char *argv[])
    16	{
    17		int n=0,k=0,result=0;
    18		printf("请输入要求的这个数:");
    19		scanf("%d",&n);
    20		printf("请输入要求的这个数的次方:");
    21		scanf("%d",&k);
    22		result=qiu_ci_fang(n,k);     //调用求次方函数
    23		printf("%d的%d次方的结果为%d\n",n,k,result);
    24		return 0;
    25	}

练习2、使用递归实现strlen的功能

//使用递归函数实现strlen功能
#include<stdio.h>
#include<string.h>
#define M 100             //定义数组容量M
int  jisuan_strlen(char str[])  //使用递归实现strlen功能
{
	int i=0,sum=0;
	if(str[i]=='\0')
	{
		return 0;
	}
	else
	{
		
		return 1+jisuan_strlen(str+1);
	}
}
/********************主程序*************************/
int main(int argc, const char *argv[])
{
	char str[M]="";       //定义一个字符数组
	printf("请输入字符串:");
	scanf("%s",str);
	int len=jisuan_strlen(str);  //调用递归strlen功能函数
	printf("该字符串的长度为%d\n",len);
	return 0;
}

练习3.使用递归函数实现汉诺塔问题

     1	#include<stdio.h>
     2	#include<string.h>
     3	int han_nuo_ta(int i)   //递归汉诺塔函数
     4	{
     5		if(i==1)
     6		{
     7			return 1;
     8		}
     9		else
    10		{
    11			
    12		return 2*han_nuo_ta(i-1)+1;
    13		}
    14	}
    15	/*******************主程序*************************/
    16	int main(int argc, const char *argv[])
    17	{
    18		int n=0;         //n输入个数
    19		printf("请输入个数:");
    20		scanf("%d",&n);
    21		int num=han_nuo_ta(n);       //调用函数
    22		printf("需要交换的次数为%d",num);
    23		return 0;
    24	}

练习4、定义一个函数将一个字符串从大到小排序

练习5、实现一个函数,用于检查一个字符串是否是回文数(正序和反序都相同)

     1	#include<stdio.h>
     2	#include<string.h>
     3	#define M 100000
     4	int panduan_huiwenshu(char str[],int len)//实现判断回文数功能函数
     5	{
     6		for(int i=0;i<len/2;i++)
     7		{
     8			if(str[i]!=str[len-1-i])
     9			{
    10			printf("该字符串不是回文数\n");
    11			return 0;
    12			}
    13		}	
    14		printf("该字符串是回文数\n");
    15	
    16	}
    17	int main(int argc, const char *argv[])
    18	{
    19		char str[M]={""};        //定义一个字符串
    20		printf("请输入字符串:");
    21		gets(str);
    22		int len=strlen(str);
    23		panduan_huiwenshu(str,len); // 调用判断回文数函数
    24	
    25		return 0;
    26	}

练习6、使用指针完成判断自己的主机存储多字节正数时,是大端存储还是小端存储。

练习7、有一段文本,写一段程序统计其中的单词数

例如:Do one thing at a time,and do well.

注意单词的间隔不一定是一个空格

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值