小编xxx*_*xxx的帖子

进行动态编程

我编写了一个小程序,使用动态编程技术来计算数字的阶乘。

#include<stdio.h>

int fact(int n)
{
    int f[n],i;
    f[0] = 1;

    for(i=1;i<=n;i++)
        f[i] = i * f[i-1];
    return f[n];
}

int main(void)
{
    printf("\n Factorial of %d is %d ",5,fact(5));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

记忆方法正确吗?因为,动态编程涉及递归。但是我没有在这里包括它。所以我不确定我的方法。

c dynamic-programming

5
推荐指数
2
解决办法
2808
查看次数

动态内存分配是否会降低性能?

我浏览了Bjarne Stroustrup视频,在那里他解释了为什么要避免链接列表.

基本上,当使用指针动态分配内存时,有更多的缓存未命中会降低性能.

但是,如果将相同的事情应用于非线性数据结构(如树和图形),那么同样的事情是否成立?

因为,在树中,我们每个节点都有两个指针,并且指针的随机移动也会导致缓存未命中.

但是,树已被证明比线性数据结构表现更好.当然,树也可以使用数组实现,但同样存在大量的内存消耗.

我的问题是:动态内存分配是否良好?

c c++

4
推荐指数
1
解决办法
314
查看次数

使用递归在C中反转字符串

我编写了一个使用递归来反转字符串的程序.但我得到的输出总是一个空字符串.

我想知道我的逻辑有什么问题?

#include<stdio.h>

void reverse(char a[], int start, int end)
{
    char t;
    if(start>=end)
        return;
    else
    {
        t = a[start]; a[start] = a[end]; a[end] = t;
        reverse(a,++start,--end);   
    }
}

int main(void)
{
    char a[] = "hello";
    int n = sizeof(a)/sizeof(a[0]); 
    printf("Given string is : %s ",a);
    reverse(a,0,n-1);
    printf("Reversed string is : %s ",a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

打印我得到的个人字符,

在此输入图像描述

c recursion

2
推荐指数
1
解决办法
251
查看次数

标签 统计

c ×3

c++ ×1

dynamic-programming ×1

recursion ×1