고전 면접 문제의 귀속 호출 몇 가지 고전 예시

1、  1-100  
#include <iostream>
int fun(int n, int &sum)  
{  
   n && fun(n - 1, sum);  
   return (sum += n);  
}  
int main()  
{  
int sum = 0;  
int n = 100;  
printf("1+2+3+...+n=%d
", fun(n, sum)); return 0; system("pause"); }

2. 구산수열 1, 2, 3, 5...스무 번째 수의 값
#include<iostream>
using namespace  std;

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

int  main()
{
	int num = 20;
	printf("num=%d
", fun(num)); system("pause"); return 0; }

3. 폴더 크기 구하기
#include <stdio.h>     
#include <dirent.h>  
#include <sys/stat.h>    
#include <sys/types.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
static int
mc_get_stat(char *filename, struct stat *stbuf)
{
    return stat(filename, stbuf);        /*   */
} 

/*  ,   */
static blkcnt_t 
mc_do_du(char *filename, int *len)
{
    DIR    *dp;
    char    name[256];
    struct     dirent    *p;
    blkcnt_t     n;
    struct stat    stbuf;
    n = 0;
    if(mc_get_stat(filename, &stbuf) == -1){
        fprintf(stderr, "%s cannot access 
", filename); return n; } if(S_ISDIR(stbuf.st_mode)){ dp = opendir(filename); while(p = readdir(dp)){ if(!strcmp(".", p->d_name) || !strcmp("..", p->d_name)) continue; else{ /* 255 */ strcpy(name, filename); strcat(name, "/"); strcat(name, p->d_name); n = mc_do_du(name, len); } } closedir(dp); } return *len += stbuf.st_size; } int main() { int len =0, len1=0; len1 = mc_do_du("/usr/local/bin/qq", &len); printf("len1 =%d, len=%d
", len1, len); }

좋은 웹페이지 즐겨찾기