• 简单递归练习


     1 #include<stdio.h>
     2 //#include<stdlib.h>
     3 int jiecheng(int i){
     4     //①算n!
     5     if(i==1)return 1;
     6     return i*jiecheng(i-1);
     7 }
     8 int Fibonacci(int i){
     9     //②算第i项斐波那契数列
    10     if(i==1)return 1;
    11     if(i==0)return 0;
    12     return Fibonacci(i-1)+Fibonacci(i-2);
    13 }
    14 int power(int n,int k){
    15     //③算n^k
    16     if(k==1)return n;
    17     return n*power(n,k-1);
    18 }
    19 int gcd(int m,int n){
    20     //④用欧几里得算法算m与n的最大公约数
    21     if(m%n==0)return n;
    22     return gcd(n,m%n);
    23 
    24 }
    25 int DigitSum(int n){
    26     //⑤输入一个非负整数,返回组成它的数字之和
    27     if(n==0)return 0;
    28     return (n%10)+DigitSum(n/10);
    29 }
    30 int DigitalRoot(int n){
    31     //⑥整数n的数字根
    32     if(n<10) return n;
    33     return DigitalRoot(DigitSum(n));
    34 }
    35 int Comb(n,r){
    36     //⑦计算组合数C(n,r);组合数C(n,r)=(P(n,r)/r!)=(n!/((n-r)!*r!));
    37     //  存在如下公式:C(n,m)= C(n,n-m)= C(n-1,m-1)+C(n-1,m)
    38     if(n==r||r==0)return 1;
    39     return Comb(n-1,r-1)+Comb(n-1,r);
    40 }
    41 
    42 void main(){
    43 
    44     printf("① %d
    ",jiecheng(5));
    45     printf("② %d
    ",Fibonacci(6));
    46     printf("③ %d
    ",power(2,3));
    47     printf("④ %d
    ",gcd(18,24));
    48     printf("⑤ %d
    ",DigitSum(12345));
    49     printf("⑥ %d
    ",DigitalRoot(12345));
    50     printf("⑦ %d
    ",Comb(6,4));
    51 
    52 }

    结果:


    
    
  • 相关阅读:
    matlab基本数据结构struct
    matlab基本函数strcmp num2str 字符串格式
    matlab基本函数inf, isempty, round, floor, fix
    matlab基本函数randperm end数组索引
    matlab基本函数find
    【未通过】LintCode #366 斐波纳契数列
    LintCode #3 统计数字
    计算1至n中数字X出现的次数
    LintCode #2 尾部的零
    LintCode #1 A + B 问题
  • 原文地址:https://www.cnblogs.com/zzsf/p/3820627.html
Copyright © 2020-2023  润新知