c递归程序

递归

long recursin(int);
void main()
{
    int n;
    long result;

    printf("input a integer number: \n");
    scanf("%d", &n);

    result = recursin(n);
    printf("%d! = %ld\n", n, result);
}

long recursin(int n)
{
    long temp_result;
    if(n<0)
    {
        printf("n<0, input error!\n");
    }
    else if(n == 0 || n == 1)
    {
        temp_result = 1;
    }
    else
    {
        temp_result = recursin(n-1) * n;
    }
    return temp_result;
}
时间: 2024-10-23 03:22:41

c递归程序的相关文章

【译】 AWK教程指南 11递归程序

awk 中除了函数的参数列表(Argument List)上的参数(Arguments)外,所有变量不管于何处出现,全被视为全局变量.其生命持续至程序结束--该变量不论在function外或 function内皆可使用,只要变量名称相同所使用的就是同一个变量,直到程序结束.因递归函数内部的变量,会因它调用子函数(本身)而重复使用,故编写该类函数时应特别留心. 例如:执行 awk ' BEGIN { x = 35 y = 45 test_variable( x ) printf("Return t

怎样写出一个递归程序

作为小白,我看到递归程序只是能看懂,但是自己写不出来,我知道要有一个临界条件(这个并不难找),但我不知道怎么演进,这让我十分头疼,因此找到了一篇个人认为写的不错的文章如下,根据我对递归的理解和疑问对原文做了一些标注,欢迎各位大佬,写下自己对递归的理解,本小白感激不尽. 如何写一个递归程序 总是听到大大们说递归递归的,自己写程序的时候却用不到递归.其中的原因,一个是害怕写递归,另一个就是不知道什么时候用递归.这篇文章就浅析一下,希望看完之后不再害怕递归,这就是本文最大的目的. 递归到底有什么意义?

关于递归程序的时间复杂度

关于递归程序的时间复杂度 主定理 递归中,一个规模为n的问题分成a个规模为n/b的问题,额外计算复杂度为c*n^d,那么 证明 我们画出递归树,则递归树共有logb(n)+1层.对于第j层,有a^j个子问题,每个子问题规模为n/b^j. 则第j层所用时间为 接下来求所有层的和 根据a与b^d的大小讨论,易得主定理中结论 tip 若不为平均分,则设最大的一部分为p*n(0 < p < 1),则树的深度为 又由于 所以深度依旧是log(n)级别 快排复杂度分析 由于快排分割随机,所以我们考虑平均复

开始学习C语言递归程序,汉诺(hanoi)塔问题尝试

汉诺问题:3个座A, B,C, 在A座有64个大小不等的盘,现在要把64个盘转移到另一个座,每次只能移动一个盘,且大盘不能放在小盘上面. 思考过程. 1)移动1个盘到另一个座需要搬1次,记 a(1) = 1 2)移动2个盘:在已经移动1个盘的基础上(用a1次),将第2个盘放到另一个空座(1次),然后再将第1个盘移动到第2个盘上,需要a1次,记 a(2) = 2 * a(1) + 1 3)移动3个盘:在已经移动2个盘的基础上(用a2次),将第3个盘放到另一个空座(1次),然后再将前2个盘移动到第3

C# 递归程序 获取某个节点下的全部子节点

/// <summary> /// 获取组织结构树 /// </summary> /// <param name="list"></param> /// <param name="id"></param> /// <param name="treeNodes"></param> /// <returns></returns> s

简单说明什么是递归?什么情况会使用?并使用java实现一个简单的递归程序。

解答: 1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象. 2)递归算法一般用于解决三类问题: a.数据的定义是按递归定义的.(Fibonacci(斐波那契)函数) b.问题解法按递归算法实现.(回溯) c.数据的结构形式是按递归定义的.(树的遍历,图的搜索) 3).这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc" 则程序会输出: abc acb bac bc

一些递归程序

代码一: #include<iostream> using namespace std; void ten_to_two(int num); int main() { int num=10; ten_to_two(num); return 0; } void ten_to_two(int num) { if(num!=0){ int m=num%2; num=num/2; ten_to_two(num); cout<<m; } } 代码二:(二进制的递归算法) #include &

两个递归程序(数组最大元素,汉诺塔)

1.递归返回数组中最大元素 //返回数组中最大元素 int findMax(int a[], int n) { int next = 0; if (n == 1) return a[0]; next = findMax(&a[1], n-1); return a[0]>next ? a[0] : next; } 2.汉诺塔 /* 汉诺塔:把盘子从A驻移动到C柱,大盘子时刻不能在小盘子之上 输入:n(盘子数目) 输出:步骤 */ int hanoid(char A, char B, char

递归程序如何写,要满足三个条件,切记!

python中递归函数的使用: def division(n): print(n) if int(n/2)==0: return n#递归特性一:必须有一个明确的结束条件 return division(int(n/2))#递归特性而:每次递归都是为了让问题规模变小 division(10)#递归特性三:递归层次过多会导致栈溢出,且效率不高--------------------- 作者:贾公子 来源:CSDN 原文:https://blog.csdn.net/j904538808/articl