rever_string()函数(递归实现)即递归实现字符串反转

一、实现功能:

将输入字符串abcde反转成edcba输出

二、代码

#include <stdio.h>
#include <string.h>
#include<assert.h>
#define MAX_STR 10
void reverse_string(char * string)
{
	int len = strlen(string);
	assert(string);
	if (len <= 1)
	{
		return;
	}
	else
	{
		char ch = string[0];
		string[0] = string[len - 1];
		string[len - 1] = '\0';
		reverse_string(string+1);
		string[len - 1] = ch;
	}
}
int main()
{
	char p[MAX_STR];
	printf("输入字符串:\n");
	scanf("%s",p);
	reverse_string(p);
	printf("%s\n", p);
}

二、运行结果

时间: 2024-11-07 22:26:29

rever_string()函数(递归实现)即递归实现字符串反转的相关文章

函数递归时,递归次数到900多时,就是抛出异常exception RuntimeError(&#39;maximum recursion depth exceeded&#39;,)

import subprocess import multiprocessing import urllib import sys import os import pymongo import signal import time client=pymongo.MongoClient("192.168.139.143",27017) db=client.domaindb collection=db.domain def getdomain(i): print("proces

PHP有关函数的编程思想(递归与迭代)

PHP有关函数的编程思想(递归与迭代) 递归思想(递归函数): 递归思想的一个基本形式是:在一个函数中,有至少一条语句,会去调用该函数自身. 但是从代码角度来说,如果单纯是函数内部调用函数,则会出现"出不来"的现象. 则我们就必须再来解决下一个问题:怎么终止(停止)这种自身的调用 -- 找到递归函数的出口 案例分析:写一个递归函数,该函数可以计算一个正整数的阶乘 数学基础: A:1的阶乘是1 B:大于1的数的阶乘是这个数减1的数的阶乘,乘以该数的结果. 比如:要求6的阶乘:则定义一个函

每天刷个算法题20160524:阿克曼函数的递归转非递归解法

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51524754 为了防止思维僵化,每天刷个算法题.已经刷了几天了,现在发点代码. 我已经建了一个开源项目,每天的题目都在里面: https://github.com/Xiaofei-it/Algorithms 绝大部分算法都是我自己写的,没有参考网上通用代码.读者可能会觉得有的代码晦涩难懂,因为那是我自己的理解. 最近几天都是在写一些原来的东西

MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归

Lecture4:Decomposition and abstraction through functions:introduction to recursion 函数分解抽象与递归 Functions 函数 block up into modules 分解为模块 suppress detail 忽略细节 create "new primitives" 创建原语的思考方式 w3school Python函数 #example code for finding square roots

全排列(递归与非递归实现)

全排列问题在公司笔试的时候很常见,这里介绍其递归与非递归实现. 递归算法 1.算法简述 简单地说:就是第一个数分别以后面的数进行交换 E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b) 然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次递归进行. void swap(string &pszStr,int k,int m) { if(k==m) return ;

(C语言)递归调用实现字符串反转

问题描述: 编写一个函数reverse_string(char *srring)(递归实现) 实现:将参数字符串中的字符反向排列. 要求:不能使用处C库函数中的字符串操作函数. 程序分析: 思路如下: 本程序用递归的思想实现这一功能,最关键的一点是要改变'\0'所在的位置.a.先交换字符串最外层的两个字符,同时保存第一个字符的值(称之为压栈)  b.将指针指向下一个字符,将两个值交换后的最后一个字符赋为'\0',从而减小问题的规模.c.递归调用,相当于传入新的字符串.d.递归调用结束后,把之前保

黑马程序员----java基础---递归概述、递归和循环的区别

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.递归函数,通俗的说就是函数本身自己调用自己... 如:n!=n(n-1)! 你定义函数f(n)=nf(n-1) 而f(n-1)又是这个定义的函数..这就是递归 定义:程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小

数据结构二叉树的递归与非递归遍历之 实现可编译(1)java

前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序遍历为例进行说明,中序遍历和后序遍历,以此类推! 二叉树递归与非递归遍历的区别,虽然递归遍历,跟容易读懂,代码量少,运算快,但是却容易出现溢出的问题,所以所以非递归遍历,在处理千万级的运算量时会先的很有用处. 二叉树的先序遍历:先访问根节点,再访问先后访问左右节点.如图: 二叉树的递归遍历之java

数据结构——二叉树遍历之“递归与非递归遍历”

简述 二叉树的遍历分为先序遍历.中序遍历和后序遍历.如下图所示: 递归遍历 private void bianli1(List<Integer> list, TreeNode root) { // 先序遍历 if (root == null) { return; } list.add(root.val); bianli1(list, root.left); bianli1(list, root.right); } private void bianli2(List<Integer>

JAVA递归、非递归遍历二叉树(转)

原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private BinTree lchild; private BinTree rchild; public BinTree(char c) { date = c; } // 先序遍历递归 public static void preOrder(BinTree t) {